繁体   English   中英

Python:Zip提取异常

[英]Python : Zip extraction exception

我为我的音乐目录制作了一个自动提取器。 我编写了我的代码,用于处理zip和rar文件。 代码工作正常,但如果工作目录中有其他类型的文件,那么我收到一条错误消息:

raise BadZipfile, "File is not a zip file"
BadZipfile: File is not a zip file

这意味着mp3文件或其他任何东西阻止或中断了提取过程。 这是我的代码:

def extraction():
    funcs = {'.rar':rarfile.RarFile, '.zip':zipfile.ZipFile}
    for ArchivesFiles in chemin_zipfiles :    
        truncated_file, ext = os.path.splitext(os.path.basename(ArchivesFiles)) 
        if not os.path.exists(truncated_file):
            new_folder = os.makedirs(truncated_file)
            arch_ref = funcs[ext](ArchivesFiles,'r')
            new_folder = os.path.realpath(truncated_file)
            arch_ref.extractall(new_folder)

我怎么能避免这个?

编辑:

我做了一些改变:

def extraction():
    funcs = {'.rar':rarfile.RarFile, '.zip':zipfile.ZipFile}
    for ArchivesFiles in chemin_zipfiles :    
        truncated_file, ext = os.path.splitext(os.path.basename(ArchivesFiles)) 
        if not os.path.exists(truncated_file):
            new_folder = os.makedirs(truncated_file)
            arch_ref = funcs[ext](ArchivesFiles,'r')
            new_folder = os.path.realpath(truncated_file)
            try:
                arch_ref.extractall(new_folder)
            except BadZipfile:
                continue
            except NotRarFile:
                continue

但仍然收到错误:

raise NotRarFile("Not a Rar archive: "+self.rarfile)
NotRarFile: Not a Rar archive: /Volumes/me/albums/reggae/reggae_dub/._Dubalizer_SubExisteÌncia_freshpoulp.rar

非常感谢。

我认为有两种方法。 首先你可以捕获异常:

try:
    arch_ref.extractall(new_folder)
except BadZipfile:
    continue

或者您可以尝试通过过滤文件扩展名和/或检查文件头来阻止加载非zip文件。

您正在错误地指定异常。 代替:

except BadZipfile: 
    continue
except NotRarfile:
    continue

你应该做的任何一件事:

except zipfile.BadZipfile:
    continue
except rarfile.NotRarFile:
    continue

或者,以紧凑的方式:

except (zipfile.BadZipfile, rarfile.NotRarFile):
    continue

老帖子但是,

我相信你遇到的问题是你对ê的重音。

因为您正在尝试访问某个文件,它将返回,因为文件不存在错误,但如果您要在代码中的其他地方使用该字符,请说尝试打印它会导致UnicodeDecode错误。

有关此内容的更多信息,请访问: https//pythonhosted.org/kitchen/unicode-frustrations.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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