[英]Create zipfile at local and write files from s3
我正在本地機器上創建一個 zipfile,並想從 s3 寫入文件。 到目前為止,我無法做到。 這就是我同時擁有的。
import os
import zipfile
from fs import open_fs
fs = open_fs(os.getenv('s3_sample_folder'))
file_names = file_names() #list of file names
with zipfile.ZipFile('zipfile.zip', mode='w') as zf:
for file in file_names:
with fs.open('/'+file, 'rb') as remote_file:
content = remote_file.read()
zf.write(content, basename(content))
ZipFile.write
方法接受文件名,而不是文件內容。 您應該使用ZipFile.writestr
方法將文件內容寫入 zip 文件:
zf.writestr(file, content)
由於您使用的是 PyFilesystem,因此您可以打開 S3 文件系統和 Zip 文件系統,然后使用copy_file在它們之間進行復制。
像下面這樣的東西應該工作:
import os
from fs import open_fs
from fs.copy import copy_file
with open_fs(os.getenv('s3_sample_folder')) as s3_fs:
with open_fs('zip://zipfile.zip', create=True) as zip_fs:
for filename in file_names():
copy_file(s3_fs, filename, zip_fs, filename)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.