Python批量处理文件需遵循遍历+读取+解析+保存四步闭环,关键在于选用合适模块并规避路径与编码问题:统一用pathlib.Path处理路径、优先utf-8编码、非正则优先提取、结构化数据用pandas汇总、添加进度提示与错误反馈。
用Python批量处理文件,核心是遍历+读取+解析+保存四步闭环。关键不在写多复杂,而在选对模块、避开路径和编码坑。
常见文本类文件(.txt/.csv/.log/.md)可用内置open(),但必须显式指定编码;Excel(.xlsx)需pandas或openpyxl;JSON用json模块最稳妥。
utf-8打开,遇到乱码再试gbk或latin-1pathlib.Path替代os.path,路径拼接更直观,比如dir_path / "data" / "file.txt"if file.is_file() and not file.name.startswith(".")别一上来就写正则。先看数据结构:是固定列宽?有分隔符?含标准字段名?能用split()、csv.reader或pandas.read_csv()就不用正则。
line.startswith("ERROR")快速过滤csv模块,别用str.split(",")pattern = re.compile(r"\d{4}-\d{2}-\d{2}"),避免循环里重复编译批量解析后不导出等于白干。推荐两种方式:
pandas.DataFrame收集,最后.to_csv("output.csv", index=Fa
lse)with open(..., "a", encoding="utf-8") as f:追加,注意首次清空旧文件result["source"] = file.name,方便溯源处理上百个文件时,没反馈容易误判卡住。不用第三方库,用内置print()配合\r回车即可。
print(f"\r处理中: {i}/{total} ({file.name})", end="", flush=True)except Exception as e: print(f"❌ {file.name}: {e}"),便于定位问题文件print(f"\n✅ 全部完成,共处理 {total} 个文件")