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

如何用Python按小时合并目录下YYYYMMDDHHMM命名的批量TXT文件?

解决按小时合并YYYYMMDDHHMM格式TXT文件的问题

我来帮你搞定这两个问题,咱们一步步调整代码,实现按小时合并文件并正确命名输出:

核心思路

你的文件名格式是YYYYMMDDHHMM.txt,前10位字符(YYYYMMDDHH)刚好是日期+小时的唯一标识,我们可以用这个标识来分组,把同一小时的所有文件合并到一起,输出文件名就用这个标识命名(比如2018010100.txt)。

完整代码实现

import os
from itertools import groupby

def concat_files_by_hour(path):
    # 获取目录下所有txt文件,过滤非txt文件并排序
    file_list = sorted([f for f in os.listdir(path) if f.endswith('.txt')])
    
    # 按文件名前10位(YYYYMMDDHH)分组
    for hour_key, group in groupby(file_list, key=lambda x: x[:10]):
        # 输出文件名:小时标识 + .txt
        output_filename = os.path.join(path, f"{hour_key}.txt")
        # 打开输出文件,写入所有同小时的文件内容
        with open(output_filename, "w") as outfile:
            for filename in group:
                # 拼接完整文件路径,避免找不到文件
                full_path = os.path.join(path, filename)
                with open(full_path, "r") as infile:
                    outfile.write(infile.read())
                    # 可选:如果需要在文件之间加分隔符,比如换行
                    # outfile.write("\n")
        print(f"已合并小时 {hour_key} 的文件到 {output_filename}")

# 调用示例,替换成你的目录路径
concat_files_by_hour("/path/to/your/files")

代码解释

  1. 过滤与排序:先筛选出.txt文件并排序,确保文件按时间顺序排列,这样groupby才能正确把同一小时的文件分到一组(groupby要求相同key的元素连续)。
  2. 分组逻辑:用groupby按文件名前10位分组,这个key就是我们的小时标识(比如2018010100)。
  3. 输出文件命名:直接用小时标识作为输出文件名,比如2018010100.txt,这样不会覆盖文件,每个小时对应一个独立文件。
  4. 路径处理:用os.path.join拼接目录路径和文件名,避免因当前工作目录不同导致的文件找不到问题。

额外优化建议

  • 如果需要保留原文件的换行分隔,可以在写入每个文件内容后加outfile.write("\n"),避免两个文件的内容连在一起。
  • 如果某个小时的文件数量不是60个(比如缺失了某些分钟的文件),代码依然能正常合并该小时的所有现有文件。

内容的提问来源于stack exchange,提问作者Mik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:11:41