最近有一个需求,是读取zip包中的内容,然后上传到s3上。用open直接打开zip包,read的时候会报错。后来看了一下zipfile,io,这2个包,思路就是把zip包中的文件中的内容写到字节流中,然后把字节流上传到s3上
import zipfile
import io
local_file_path = "test.zip"
new_zip = io.BytesIO()
fp = zipfile.ZipFile(new_zip, 'w', zipfile.ZIP_DEFLATED, False)
with zipfile.ZipFile(local_file_path, mode='r') as f:
for name in f.filelist:
print("name: ", name)
fp.writestr(name, f.open(name).read())
fp.close()
print(new_zip.getvalue())