Python实现读取文本内zip路径并将zip内容写入新文本文件
Zip文件批量信息导出Python实现指引
原代码存在的问题
- 循环逻辑冗余错误:for循环嵌套while循环的写法完全多余,还存在缩进不匹配的语法错误,运行时要么死循环,要么无法正确逐行读取配置的zip路径
- 输出不符合需求:仅创建了1个固定名称的输出文件,没有按要求给每个zip生成独立的结果文件
- 路径读取错误:读取每行内容时没有去掉末尾自带的换行符,会导致zip文件路径拼接错误,无法正常打开zip
- 功能缺失:仅写入了zip内的文件名,没有实现读取并写入文件内容的逻辑
- 鲁棒性差:没有做基础的异常判断,遇到文件夹项、二进制文件时会直接崩溃
分步实现步骤
步骤1:准备输入配置文件
打开路径C:\Users\Tanish L\OneDrive\InputReadFile.txt,每行填写一个zip文件的完整绝对路径,示例内容如下:
C:\Users\Tanish L\Desktop\test1.zip C:\Users\Tanish L\Desktop\test2.zip C:\Users\Tanish L\Desktop\test3.zip
填写完成后保存文件,注意不要留多余空行、行尾不要加多余空格。
步骤2:编写可运行代码
以下代码完全基于原有代码用到的Python标准库、基础文件操作逻辑实现,没有引入额外复杂语法:
import zipfile # 读取配置文件里的所有zip路径 input_file = open('C:\\Users\\Tanish L\\OneDrive\\InputReadFile.txt', 'r', encoding='utf-8') # 逐行处理,去掉换行符、空行 zip_path_list = [] for line in input_file.readlines(): clean_path = line.strip() if clean_path: zip_path_list.append(clean_path) input_file.close() # 逐个处理每个zip文件 for zip_index, zip_path in enumerate(zip_path_list): # 为每个zip生成独立的输出文件 output_filename = f'zip_result_{zip_index + 1}.txt' output_file = open(output_filename, 'w', encoding='utf-8') # 打开当前zip包 zip_obj = zipfile.ZipFile(zip_path, 'r') # 写入zip基础信息 output_file.write(f'=== 对应Zip包路径:{zip_path} ===\n\n') output_file.write('--- 包内文件列表 ---\n') # 写入所有文件名 for inner_file in zip_obj.namelist(): output_file.write(f'- {inner_file}\n') output_file.write('\n--- 包内文件内容 ---\n') # 逐个读取文件内容写入 for inner_file in zip_obj.namelist(): # 跳过文件夹项,避免读取报错 if inner_file.endswith('/'): continue output_file.write(f'\n[文件:{inner_file} 内容开始]\n') try: # 读取内容,无法解码的二进制文件直接标注 content = zip_obj.read(inner_file).decode('utf-8', errors='ignore') output_file.write(content) except Exception as e: output_file.write(f'[非文本文件无法读取内容]') output_file.write(f'\n[文件:{inner_file} 内容结束]\n') # 关闭打开的资源 zip_obj.close() output_file.close() print(f'已完成{zip_path}处理,结果存入{output_filename}')
步骤3:运行代码
- 确认本地Python环境正常,
zipfile是Python自带标准库,不需要额外安装任何第三方包 - 将写好的代码保存为
.py后缀的文件,双击运行或者在命令行执行即可 - 运行前确认配置文件里填写的3个zip路径真实存在,没有拼写错误
步骤4:结果校验
代码运行完成后,会在脚本所在的同目录下生成3个独立的结果文件,打开后可核对:
- 文件头部标注的zip路径是否和配置一致
- 是否完整列出了zip包内的所有文件、文件夹名称
- 文本类文件的内容是否正常写入,图片、压缩包等二进制文件会标注无法读取,属于正常现象
内容的提问来源于stack exchange,提问作者Tan7
相关产品推荐
相关产品推荐

