为什么我无法通过python zipfile解压缩压缩文件?

时间:2020-07-09 03:29:55

标签: python-3.x zipfile bytesio

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())

1 个答案:

答案 0 :(得分:0)

您必须调用my_zip.close()才能使输出zip文件可用。您没有在第一名中表明这一点,但我认为它一定能在那儿出现。

在第2条中,在调用zip_buffer之前将my_zip.close()的内容写到文件中,因此该文件不可用。您稍后再致电my_zip.close(),但是由于您已经写出zip_buffer的内容,为时已晚,已经为时已晚。

因此,要解决此问题,只需将调用移至my_zip.close(),然后再将zip_buffer的内容写入文件中即可。