0

我有一个大的 zip 文件(40 GB),我正在尝试提取它。但有些文件已损坏。因此,每当我尝试时,extractall()我都会BadZipfile: Bad CRC-32 for file 'filename.jpg'出错。当我使用testzip()时,我能够看到第一个损坏的文件。这是我正在使用的代码:

import zipfile

path_to_zip_file = "data.zip"
directory_to_extract_to = "directory/"

with zipfile.ZipFile(path_to_zip_file, 'r') as zip_ref:
   print(zip_ref.testzip())
   zip_ref.extractall(directory_to_extract_to)

现在我的问题是,有没有办法忽略或删除损坏的文件,以便我继续解压缩过程?

4

1 回答 1

1

一个一个地提取文件,捕获可能的异常并继续下一个文件:

import zipfile

with zipfile.ZipFile("data.zip", "r") as zip_ref:
    for name in zip_ref.namelist():
        try:
            zip_ref.extract(name, "directory/")
        except zipfile.BadZipFile as e:
            print(e)
于 2022-01-07T19:52:40.220 回答