gpt4 book ai didi

python - 创建临时压缩文件

转载 作者:太空狗 更新时间:2023-10-29 17:22:48 26 4
gpt4 key购买 nike

我需要创建一个临时文件来发送它,我试过了:

# Create a temporary file --> I think it is ok (file not seen)
temporaryfile = NamedTemporaryFile(delete=False, dir=COMPRESSED_ROOT)

# The path to archive --> It's ok
root_dir = "something"

# Create a compressed file --> It bugs
data = open(f.write(make_archive(f.name, 'zip', root_dir))).read()

# Send the file --> Its ok
response = HttpResponse(data, mimetype='application/zip')
response['Content-Disposition'] = 'attachment; filename="%s"' % unicode(downloadedassignment.name + '.zip')
return response

我完全不知道这是否是个好方法..

最佳答案

我实际上只需要做一些类似的事情,并且我想尽可能地完全避免文件 I/O。这是我想出的:

import tempfile
import zipfile

with tempfile.SpooledTemporaryFile() as tmp:
with zipfile.ZipFile(tmp, 'w', zipfile.ZIP_DEFLATED) as archive:
archive.writestr('something.txt', 'Some Content Here')

# Reset file pointer
tmp.seek(0)

# Write file data to response
return HttpResponse(tmp.read(), mimetype='application/x-zip-compressed')

它使用 SpooledTemporaryFile 因此它将保留在内存中,除非它超出内存限制。然后,我将这个临时文件设置为供 ZipFile 使用的流。传递给 writestr 的文件名只是文件在存档中的文件名,它与服务器的文件系统没有任何关系。然后,我只需要在 ZipFile 完成它的工作后倒带文件指针 (seek(0)) 并将其转储到响应中。

关于python - 创建临时压缩文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11967720/

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