Python实现多文件合并时,如何处理部分文件缺失的情况?
问题根源
你原有代码的问题在于,把三个待读取文件的打开操作全部放在同一个with语句中,只要任意一个文件缺失触发FileNotFoundError,整个读写逻辑会直接跳到except分支执行pass,最终连存在的文件内容也不会写入。
修正代码
source_files = ["File_1.txt", "File_2.txt", "File_3.txt"] with open("Final.txt", "a+", encoding="utf-8") as final_file: for per_file in source_files: try: with open(per_file, "r", encoding="utf-8") as f: final_file.write(f.read()) except FileNotFoundError: # 单个文件缺失时直接跳过,不影响其余文件写入 continue final_file.write("\n")
逻辑说明
- 把所有待合并的源文件路径统一存在列表里,后续要增减合并的文件,直接修改列表即可,不用动核心读写代码
- 逐个遍历处理每个源文件,单个文件的读取操作单独做异常捕获,仅跳过缺失的文件,其余存在的文件内容会正常写入最终文件
- 只捕获需要处理的
FileNotFoundError异常,没有用宽泛的Exception捕获,避免权限不足、文件损坏等其他异常被静默忽略,方便排查问题 - 显式指定文件编码为
utf-8,避免不同系统默认编码差异导致的乱码问题
内容的提问来源于stack exchange,提问作者Kandan Siva
相关产品推荐
相关产品推荐

