1号:
map()
使用1号方法,我可以成功解压缩“ myzip.zip”文件。但是,我使用BytesIO(no.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'
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())
答案 0 :(得分:0)
您必须调用my_zip.close()
才能使输出zip文件可用。您没有在第一名中表明这一点,但我认为它一定能在那儿出现。
在第2条中,在调用zip_buffer
之前将my_zip.close()
的内容写到文件中,因此该文件不可用。您稍后再致电my_zip.close()
,但是由于您已经写出zip_buffer
的内容,为时已晚,已经为时已晚。
因此,要解决此问题,只需将调用移至my_zip.close()
,然后再将zip_buffer
的内容写入文件中即可。