Zip文件解压异常:已创建文件夹但未提取数据至指定目录
问题分析与修复方案
核心错误:ZipFile路径未指定具体文件
代码里with ZipFile(f'C:/Data/Test/test1/') as zipObject:仅传入了目录路径,未拼接当前循环的zipfile文件名,导致程序尝试打开整个目录而非单个zip文件,自然无法提取任何内容。正确路径应为C:/Data/Test/test1/{zipfile}。次要问题:未过滤zip文件
glob.glob('C:/Data/Test/test1/*')会匹配目录下所有文件和子文件夹,包括非zip格式的文件,后续处理会引发错误。建议改为glob.glob('C:/Data/Test/test1/*.zip')仅匹配zip文件。异常处理优化
原代码用except:捕获所有异常,不利于排查问题,建议捕获具体的OSError;同时修正子目录存在时的提示文本(原提示写的是subdir,但实际创建的是full)。
修复后的完整代码
import os from zipfile import ZipFile import glob # 仅匹配目标目录下的zip文件 zipfiles = [os.path.basename(x) for x in glob.glob('C:/Data/Test/test1/*.zip')] for zipfile in zipfiles: new_dirname = zipfile.replace('.bin.', '_') parent_dir = f'output/{new_dirname}' full_dir = f'{parent_dir}/full' # 创建父目录 try: os.mkdir(parent_dir) except OSError: print(f'{parent_dir} already exists') # 创建full子目录 try: os.mkdir(full_dir) except OSError: print(f'{full_dir} already exists') # 拼接正确的zip文件路径并执行提取 zip_path = f'C:/Data/Test/test1/{zipfile}' with ZipFile(zip_path) as zipObject: zipObject.extractall(path=full_dir) print(f'已成功提取 {zipfile} 到 {full_dir}')
内容的提问来源于stack exchange,提问作者INegativeI
相关产品推荐
相关产品推荐

