Reputation: 82765
How do I check if a zip file is corrupt or not? I have a zip file with 10 jpg images. I am able to extract say 8 of the images. Two of the images in the zip are corrupt and I am not able to extract those. Is there a way to check for this in a Python script?
Upvotes: 25
Views: 29001
Reputation: 2089
This code will either throw an exception (if the zip file is really bad or if it's not a zip file), or show the first bad file in the zip file.
import sys
import zipfile
if __name__ == "__main__":
args = sys.argv[1:]
print("Testing zip file: %s" % args[0])
try:
the_zip_file = zipfile.ZipFile(args[0])
ret = the_zip_file.testzip()
if ret is not None:
print("First bad file in zip: %s" % ret)
sys.exit(1)
except Exception as ex:
print("Exception:", ex)
sys.exit(1)
print("Zip file is good.")
Upvotes: 35
Reputation: 47592
Use the zipfile
module testzip
function, see http://docs.python.org/library/zipfile.html#zipfile.ZipFile.testzip
Upvotes: 13