gpt4 book ai didi

python - 在内存中创建一个 Zip 文件并将其附加到电子邮件

转载 作者:行者123 更新时间:2023-12-04 10:15:19 25 4
gpt4 key购买 nike

我正在尝试修改现有的 python 脚本,将内存中的 CSV 转换为(也在内存中)zip 存档,并将其作为电子邮件的附件发送。我已经成功地附加了一个内存 CSV 文件(通过 MIMEText 对象),但是由于需要设置文件字节的有效负载,我在处理 ZIP 文件(通过 MIMEBase 对象)时遇到了问题。

这是我到目前为止的代码:

csv_buffer = cStringIO.StringIO()
buffer = cStringIO.StringIO()

zf = zipfile.ZipFile(buffer,
mode='w',
compression=zipfile.ZIP_DEFLATED,
)

zf.writestr(csvfile + ".csv", csv_buffer.getvalue())


csv_file = MIMEBase('application', 'zip')
csv_file.set_payload(zf.read())
encoders.encode_base64(csv_file)
csv_file.add_header('Content-Disposition', 'attachment',
filename=csvfile + ".zip")

msg.attach(csv_file)

从这里 This user's most upvoted answer我可以修复 read() takes at least 2 arguments我通过正常操作收到的错误 open()对 zip 文件的操作,但由于该文件是一个不起作用的缓冲流。

我不知道如何加载 zipfile对象进入 set_payload但我认为这也应该有效。

最佳答案

read ZipFile的方法对象旨在读取 zip 文件中命名文件的内容。

您应该使用 buffer 的内容而是在使用 writestr 写入缓冲区后ZipFile的方法实例:

csv_file.set_payload(buffer.getvalue())

关于python - 在内存中创建一个 Zip 文件并将其附加到电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61087476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com