遇到非Zip文件时出错

问题描述 投票:0回答:1

我想从整个文件夹中获取Zip文件的注释数据,但是当它遇到除Zip文件之外的任何其他文件时它会给我一个错误:

回溯(最近一次调用最后一次):文件“C:\ Users \ user \ Desktop \ New folder \ 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))
python zip
1个回答
1
投票

试试这个

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)

您可能需要从zipfile导入BadZipFile异常

你也可以使用catch-all异常,但我会劝阻它,因为它可能会隐藏其他错误:

except Exception as e:
    print(e)
© www.soinside.com 2019 - 2024. All rights reserved.