python - 合并最后一个字母在python中重复的txt文件
问题描述
我有一个包含 txt 文件的文件夹。Txt 文件的名称总是以“_1980”、“_1981”、“_1982”...“_2015”这些年份结尾,但它们的名称以不同的数字开头。我想合并文件名以相同字母/数字开头但以上述数字结尾的 txt 文件。作为 txt 文件的示例, 例如
最终,合并的文件是 abc_allyears.txt 和 xyz_allyears.txt 等等 'otherletters'_allyears.txt
能写出相关的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())
推荐阅读
- angular - 从 Firebase 实时数据库中检索单个值(Angularfire 5 和 Ionic 3)
- jquery - 链接点击调用控制器并打开一个新选项卡 - jQuery & ASP.NET MVC
- c# - 在不破坏 C# 的情况下切换 case 执行代码
- c# - asp.net core - 从 appsettings.json 设置 Serilog.Exceptions
- javascript - 'this' 和普通变量声明之间的区别
- angular - 在 angular-cli 中打印自定义原理图日志
- javascript - 如何使用异步 getJSON 数据管理 videojs 的多个实例?
- c# - 带有 throw 的 catch 语句中的单元测试代码
- mongodb - mongo - 删除不存在的集合会抛出“ns not found”
- python - Python NRF24 转换有效载荷