简体   繁体   中英

Getting an Error while encountering a non Zip file

I wanted to get the comment data of Zip files from an entire folder, but when ever it encounters any other file besides a Zip file it gives me an error:

Traceback (most recent call last): File "C:\\Users\\user\\Desktop\\New folder\\ec5.py", line 11, in with ZipFile(zfile, 'r') as testzip: File "C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\zipfile.py", line 1200, in init self._RealGetContents() File "C:\\Users\\user\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\zipfile.py", line 1267, in _RealGetContents raise BadZipFile("File is not a zip file") zipfile.BadZipFile: File is not a zip file

Is it possible to fix it useing anything along the lines of:

try:

exception

This is the code:

import os

import unicodedata

from zipfile import ZipFile
rootFolder = u"C:/Users/user/Desktop/archives/"

zipfiles = [os.path.join(rootFolder, f) for f in os.listdir(rootFolder)]
for zfile in zipfiles:
    print("Opening: {}".format(zfile))
    with ZipFile(zfile, 'r') as testzip:
        print(testzip.comment) # comment for entire zip
        l = testzip.infolist() #list all files in archive
        for finfo in l:
            # per file/directory comments
            print("{}:{}".format(finfo.filename, finfo.comment))

Try this

for zfile in zipfiles:
    print("Opening: {}".format(zfile))
    try:
        with ZipFile(zfile, 'r') as testzip:
            print(testzip.comment) # comment for entire zip
            l = testzip.infolist() #list all files in archive
            for finfo in l:
                # per file/directory comments
                print("{}:{}".format(finfo.filename, finfo.comment))
    except BadZipFile:
        print("Bad file:", zfile)

you may need to import BadZipFile exception from zipfile

You can also use catch-all exception but I would discourage it as it may hide other errors there:

except Exception as e:
    print(e)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM