gpt4 book ai didi

python - 如何压缩整个文件夹(带有子文件夹)并通过 Flask 提供它而不将任何内容保存到磁盘

转载 作者:行者123 更新时间:2023-12-05 08:53:22 27 4
gpt4 key购买 nike

我的 Web 服务器上有一个文件夹结构,我想通过 Flask 将其用作压缩存档。

通过 Flask 发送文件非常简单:

return send_file(my_file,
attachment_filename=fileName,
as_attachment=True)

压缩可以通过多种方式完成,例如使用 shutil.make_archivezipfile,但我不知道如何将整个目录压缩到内存中,然后在不发送的情况下发送它将任何东西保存到磁盘。 shutil.make_archive 似乎只能在磁盘上创建存档。网上找到的关于zipfile的例子主要是服务于单个文件。

我怎样才能用一种方法将它们结合在一起,而不必将所有内容都保存到磁盘?最好使用 BytesIO

最佳答案

import time
from io import BytesIO
import zipfile
import os
from flask import send_file


@app.route('/zipped_data')
def zipped_data():
timestr = time.strftime("%Y%m%d-%H%M%S")
fileName = "my_data_dump_{}.zip".format(timestr)
memory_file = BytesIO()
file_path = '/home/data/'
with zipfile.ZipFile(memory_file, 'w', zipfile.ZIP_DEFLATED) as zipf:
for root, dirs, files in os.walk(file_path):
for file in files:
zipf.write(os.path.join(root, file))
memory_file.seek(0)
return send_file(memory_file,
attachment_filename=fileName,
as_attachment=True)

关于python - 如何压缩整个文件夹(带有子文件夹)并通过 Flask 提供它而不将任何内容保存到磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53880816/

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