Skip to main content
 首页 » 编程设计

python之压缩文件列表并附加在电子邮件中之python

2025年02月15日32zfyouxi

我有一个文件列表,其中包含需要为电子邮件附件压缩在一起的所有文件。

目前我使用的代码是

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 中的条目数。

请您参考如下方法:

您可以使用类似这样的方法将一个文件夹中的所有文件压缩到一个 zip 文件中:

import os 
import zipfile 
 
working_folder = 'C:\\path_to_some_folder\\' 
files = os.listdir(working_folder) 
files_py = files 
 
ZipFile = zipfile.ZipFile("zip testing3.zip", "a" ) 
 
for a in files_py: 
    ZipFile.write(os.path.basename(a), compress_type=zipfile.ZIP_DEFLATED) 
ZipFile.close()