[英]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.