如何用Python合并多文件内容并生成以当前日期命名的新文件
解决创建日期标识合并文件的Python实现问题
我来帮你搞定这个需求,先梳理下原代码里的几个关键问题,再给你修正后的完整实现:
原代码存在的问题
- 日期格式不兼容系统:用
%D生成的是MM/DD/YY格式,斜杠在Windows里是路径分隔符,会导致无法创建文件(系统会把它当成目录路径) - 语法错误:
open((filename.strftime("%D") + ".txt" ,'w+'))这里括号嵌套错误,把写入模式参数放到了文件名的元组里,直接运行会报错 - 无意义的空写入:
file.write()这行没有传入参数,会触发TypeError - 文件资源未正确释放:直接用
open()打开A1-A3后没有关闭,存在资源泄漏风险
修正后的完整代码
import datetime import os # 获取当前时间,生成安全的日期格式(所有系统通用) current_date = datetime.datetime.now() # 输出文件名:YYYY-MM-DD.txt,避免特殊字符导致的路径问题 output_filename = current_date.strftime("%Y-%m-%d.txt") # 待合并的文件列表,后续新增文件只需修改这里 target_files = ["A1.txt", "A2.txt", "A3.txt"] def merge_to_date_file(): # 用with语句自动管理输出文件的打开/关闭 with open(output_filename, 'w', encoding='utf-8') as output_file: for file_path in target_files: # 先检查文件是否存在,避免报错中断程序 if os.path.isfile(file_path): # 同样用with管理输入文件 with open(file_path, 'r', encoding='utf-8') as input_file: content = input_file.read() output_file.write(content) # 可选:添加分隔符,让不同文件的内容更易区分 output_file.write('\n---\n') else: print(f"提示:文件 {file_path} 不存在,已跳过合并") # 执行合并操作 merge_to_date_file()
关键改进说明
- 兼容所有系统的文件名:用
%Y-%m-%d格式生成日期,比如2024-05-20.txt,不会出现路径分隔符问题 - 自动管理文件资源:全程用
with语句处理文件,无需手动调用close(),自动释放资源 - 更易维护的结构:把待合并文件放到列表里,后续新增或删除文件只需修改列表,不用改循环逻辑
- 容错性提升:添加文件存在检查,避免因某个文件缺失导致程序崩溃
- 编码一致性:指定
encoding='utf-8',确保读写文件时不会出现乱码问题
内容的提问来源于stack exchange,提问作者Raphael Levy
相关产品推荐
相关产品推荐

