№1:
def run():
with open('module1/2020-06-csv.zip', 'rb') as f:
io = BytesIO(f.read())
zip_file = zipfile.ZipFile(io)
zip_buffer = 'module1/myzip.zip'
my_zip = zipfile.ZipFile(
zip_buffer,
mode='w',
compression=zipfile.ZIP_DEFLATED
)
for file in zip_file.filelist:
if file.filename.endswith('/'):
continue
filename = file.filename.split('/')[-1]
with zip_file.open(file.filename) as f:
my_zip.writestr(zinfo_or_arcname=filename, data=f.read())
Методом №1 я могу успешно распаковать файл myzip.zip. Но я использовал BytesIO (номер 2) вместо локального файла, и я не могу распаковать файл myzip.zip, что не так?
номер 2
def run():
with open('module1/2020-06-csv.zip', 'rb') as f:
io = BytesIO(f.read())
zip_file = zipfile.ZipFile(io)
# zip_buffer = 'module1/myzip.zip'
zip_buffer = BytesIO()
my_zip = zipfile.ZipFile(
zip_buffer,
mode='w',
compression=zipfile.ZIP_DEFLATED
)
for file in zip_file.filelist:
if file.filename.endswith('/'):
continue
filename = file.filename.split('/')[-1]
with zip_file.open(file.filename) as f:
my_zip.writestr(zinfo_or_arcname=filename, data=f.read())
zip_buffer.seek(0)
with open('module1/myzip.zip', 'wb') as f:
f.write(zip_buffer.read())
zip_file.close()
my_zip.close()