-1

我的目录中有一个文件夹,其中包含 CSV 文件。我正在使用 Python 并通过代码动态生成一些带有数据的 CSV 文件。因此,每次代码运行时,都会在名为csv(例如)的文件夹中创建 CSV 文件。

我已安排此代码通过 cron 作业每 10 天运行一次。因此,Python 代码每 10 天运行一次,并且 CSV 文件将在csv文件夹中创建。

现在我想压缩csv文件夹,zip并想用这个 ZIP 文件作为附件发送一封电子邮件。

  1. 是否可以将包含 CSV 文件的文件夹压缩为 ZIP 格式?
  2. 压缩后,是否可以将此压缩后的 ZIP 作为电子邮件附件发送?

如果是这样,任何人都可以让我知道如何做到这一点是否可以通过 Python 完成上述工作?或者我们可以通过linux命令来做到这一点?

4

2 回答 2

0

简单的方法是运行一个单独的 cron 作业来进行压缩和发送电子邮件:

zip -r - csv | uuencode | mail -s "csv zips for $(date)" foo@bar.com

如果您将上述内容作为 cron 作业运行,请确保首先cd进入父目录。所以如果csv/home/foo/csv

cd /home/foo && zip -r csv | uuencode | mail -s "csv zips for $(date)" foo@bar.com

于 2012-10-22T05:25:59.070 回答
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()
于 2012-10-22T08:46:29.810 回答