Получение ошибки при обнаружении не Zip-файла - PullRequest
0 голосов
/ 14 сентября 2018

Я хотел получить данные комментариев Zip-файлов из целой папки, но когда он встречает любой другой файл, кроме Zip-файла, он выдает мне ошибку:

Traceback (последний вызов был последним): файл "C: \ Users \ user \ Desktop \ New папка \ ec5.py ", строка 11, в с ZipFile (zfile, 'r') в качестве testzip: Файл "C: \ Users \ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ zipfile.py", строка 1200, в init self._RealGetContents () Файл "C: \ Users \ user \ AppData \ Local \ Programs \ Python \ Python37-32 \ lib \ zipfile.py", строка 1267, в _RealGetContents поднять BadZipFile («Файл не является zip-файлом») zipfile.BadZipFile: Файл не является zip-файлом

Можно ли это исправить, используя что-то вроде:

try:

exception

Это код:

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

1 Ответ

0 голосов
/ 14 сентября 2018

Попробуйте это

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)

. Возможно, вам понадобится импортировать исключение BadZipFile из zipfile

. Вы также можете использовать универсальное исключение, но я бы его не поощрял, так как это может скрыть другие ошибки:

except Exception as e:
    print(e)
...