云中的 Zipfile 文件(amazon s3),无需先将其写入本地文件(无写入权限)

Posted

技术标签:

【中文标题】云中的 Zipfile 文件(amazon s3),无需先将其写入本地文件(无写入权限)【英文标题】:Zipfile file in cloud(amazon s3) without writing it first to local file(no write privileges) 【发布时间】:2016-09-20 15:51:56 【问题描述】:

我需要在 amazon s3 中压缩一些文件,而无需先将它们写入本地文件。理想情况下,我的代码在开发中工作,但我在生产中没有很多写权限。

folder = output_dir
files = fs.glob(folder)
f = BytesIO()
zip = zipfile.ZipFile(f, 'a', zipfile.ZIP_DEFLATED)
for file in files:
    filename = os.path.basename(file)
    image = fs.get(file, filename)

    zip.write(filename)
zip.close()

问题出在这条生产线上

image = fs.get(file, filename)

因为我没有写权限。 我最后的手段是写入我有权访问的 /tmp/ 目录。 有没有办法从 url 路径或直接在云端压缩文件?

【问题讨论】:

使用的临时文件和命名的临时文件。 【参考方案1】:

我最终使用了 python tempfile,它最终成为了一个完美的解决方案。

使用NamedTemporaryFile 让我保证创建可以自动删除的命名和系统可见的临时文件。无需手动操作。

【讨论】:

虽然这可能是解决问题的宝贵提示,但答案确实需要证明解决方案。请edit 提供示例代码来说明您的意思。或者,考虑将其写为评论。

以上是关于云中的 Zipfile 文件(amazon s3),无需先将其写入本地文件(无写入权限)的主要内容,如果未能解决你的问题,请参考以下文章

将 Azure BLOB 存储同步到 Amazon S3

Django:使用 django-storage 从 S3 创建 zipfile

Amazon S3 查看私有文件

Amazon S3 存储桶大文件上传

从多个进程访问 Amazon S3 文件

Amazon S3 直接上传无法识别文件的内容类型