首页 > 解决方案 > 合并最后一个字母在python中重复的txt文件

问题描述

我有一个包含 txt 文件的文件夹。Txt 文件的名称总是以“_1980”、“_1981”、“_1982”...“_2015”这些年份结尾,但它们的名称以不同的数字开头。我想合并文件名以相同字母/数字开头但以上述数字结尾的 txt 文件。作为 txt 文件的示例, 例如

最终,合并的文件是 abc_allyears.txt 和 xyz_allyears.txt 等等 'otherletters'_allyears.txt

能写出相关的python代码吗?谢谢你。

标签: python

解决方案


为简单起见,此脚本假定它是从与您在问题中描述的文件相同的目录中运行的(这可以很容易地修改)。它找到所有以四位数字 plus 结尾的文件,.txt按起始字符(之前)将它们组合在一起,并将'_'每个文件的内容写入具有相同起始字符 plus 的单个文件中_allyears.txt

from glob import glob
from itertools import groupby

filenames = sorted(glob('*_[0-9][0-9][0-9][0-9].txt'))

for k, g in groupby(filenames, key=lambda f: f.rsplit('_', 1)[0]):
    with open('{}_allyears.txt'.format(k), 'w') as outfile:
        for filename in g:
            with open(filename, 'r') as infile:
                outfile.write(infile.read())

推荐阅读