You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 11:49:08