簡體   English   中英

在本地創建 zipfile 並從 s3 寫入文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM