遇到非Zip文件时出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了遇到非Zip文件时出错相关的知识,希望对你有一定的参考价值。

我想从整个文件夹中获取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))
答案

试试这个

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)

以上是关于遇到非Zip文件时出错的主要内容,如果未能解决你的问题,请参考以下文章

使用片段从数据库 SQLite 获取数据时出错

Android Studio:膨胀类片段时出错

使用 Archive::Zip 存储文件时遇到问题:我得到没有错误代码的空 zip 文件

android.view.InflateException:二进制 XML 文件第 15 行:二进制 XML 文件第 19 行:膨胀类片段时出错

在 python 中从 zip 加载音频文件时出错

二进制 XML 文件第 13 行:膨胀类片段时出错