Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
压缩文件列表并在电子邮件中附加-python_Python_Email - Fatal编程技术网

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

压缩文件列表并在电子邮件中附加-python,python,email,Python,Email,我有一个文件列表,其中包含电子邮件附件需要压缩在一起的所有文件 目前我使用的代码是 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.

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

目前我使用的代码是

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文件,并将它们附加到邮件中。因此,如果我在
文件列表中有10个文件,那么邮件将有10个压缩附件。但是我想要的是将所有的10个文件合并成一个zip文件


我在这里看到过使用多个
zip.write()
方法来编写每个文件的示例。但这不太好,因为我无法控制
文件列表中的条目数

您可以使用以下方式将文件夹中的所有文件压缩到一个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()
看看这个答案: