【发布时间】:2021-10-03 02:31:16
【问题描述】:
我有一堆文件存储在 AWS S3 上。我想将这些发现下载到一个 zip 中 下面是我的代码。
import boto3
import zipfile
from io import StringIO, BytesIO
s3 = boto3.client('s3')
s = BytesIO()
zf = zipfile.ZipFile(s, 'w')
file_name = '%s-files-%s.zip' % (student.get_full_name(), str(datetime.datetime.now()))
files_key_list = ['file1.png', 'file3.png']
for f in files_key_list:
data = s3.download_file(settings.AWS_STORAGE_BUCKET_NAME, f, f)
zf.write(data)
zf.close()
resp = HttpResponse(s.getvalue(), content_type="application/x-zip-compressed")
resp['Content-Disposition'] = 'attachment; filename=%s' % file_name
return resp
错误
stat: 无法为路径参数指定 None
【问题讨论】:
-
请提供更多信息?您的代码中有什么不起作用,问题是什么?
-
请阅读以下文章? stackoverflow.com/help/how-to-ask 它有助于以易于回答的方式提问。
-
@Dima 面临错误 stat: can't specify None for path argument --> zf.write(data)
-
据我了解原因是 zf = zipfile.ZipFile(s, 'w')。第一个参数是文件名。您提供了一个空的 BitesIO(),因此当您尝试在那里写入时会遇到问题。
-
任何解决方案
标签: python-3.x django amazon-web-services amazon-s3 boto3