【发布时间】:2017-01-10 08:34:20
【问题描述】:
我有一个文件列表,其中包含需要压缩在一起以作为电子邮件附件的所有文件。
目前我使用的代码是
if zip_file == True:
for file in file_list:
zf = tempfile.TemporaryFile(prefix='mail', suffix='.zip')
zip = zipfile.ZipFile(zf, 'a')
zip.write(file)
zip.close()
zf.seek(0)
part = MIMEBase('application', 'zip')
part.set_payload(zf.read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment', filename='xls_attachments' + '.zip')
msg.attach(part)
这让我可以为所有文件创建一个 zip 文件并将它们附加到邮件中。所以如果我在file_list 中有 10 个文件,那么邮件将有 10 个压缩附件。但我想要的是将所有 10 个文件放入一个 zip 文件中。
我在这里看到过使用多个zip.write() 方法来写入每个文件的示例。但这并不好,因为我无法控制file_list 中的条目数。
【问题讨论】: