我的目录中有一个由CSV文件组成的文件夹。我正在使用Python并通过代码动态生成一些带有数据的CSV文件。因此,每次代码运行时,CSV文件都将在名为csv
的文件夹中创建(例如)。
我已安排此代码通过cron作业每10天运行一次。因此,每10天运行一次Python代码,并在csv
文件夹中创建CSV文件。
现在我想用csv
压缩zip
文件夹,并希望发送一封包含此ZIP文件的电子邮件作为附件。
如果是这样,任何人都可以让我知道如何做到这有可能通过Python做上述事情吗?或者我们可以通过linux命令来做到这一点?
答案 0 :(得分:0)
简单的方法是运行一个单独的cron作业来进行压缩和电子邮件发送:
zip -r - csv | uuencode | mail -s "csv zips for $(date)" foo@bar.com
如果您将上述内容作为cron作业运行,请确保先{parent} cd
进入父目录。如果csv
是/home/foo/csv
:
cd /home/foo && zip -r csv | uuencode | mail -s "csv zips for $(date)" foo@bar.com
答案 1 :(得分:0)
import zipfile
import smtplib
def archive_log(src, dst):
"""
Archiving log file to zip
"""
zip = zipfile.ZipFile(dst, 'w')
zip.write(src, os.path.basename(src), zipfile.ZIP_DEFLATED)
zip.close()
def send_email_report2(self):
SEND_TO = ['xxx@yyy.com']
SMTP_IP = '0.0.0.0'
msg = MIMEMultipart()
msg['From'] = 'xxx@yyy'
msg['To'] = COMMASPACE.join(SEND_TO)
msg['Date'] = formatdate(localtime=True)
msg['Subject'] = 'Subject'
msg.attach(MIMEText('bodu text'))
for file_link in link_attachments:
part = MIMEBase('application', "octet-stream")
part.set_payload(open(file_link, "rb").read())
Encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"' % os.path.basename(file_link))
msg.attach(part)
smtp = smtplib.SMTP(SMTP_IP)
smtp.sendmail('xxx1@yyy.com', SEND_TO, msg.as_string())
smtp.close()