Python实现多文本文件合并与重命名处理示例
本文介绍使用Python脚本批量合并多个代码或文本文件到一个新文件中,并对原始文件进行重命名标记已处理。示例涵盖文件创建、读写、重命名及空行过滤,解决逐一打印代码文件效率低且浪费纸张的问题。
前言
在接手新项目时,阅读代码是常见任务。有时需要将代码文件打印出来以便查阅,但项目中的代码文件数量往往多达两位数甚至更多。逐一打开并打印这些文件不仅耗费大量精力,而且单个文件在纸上可能仅占一两行,造成纸张的极大浪费。如果能够将所有文件内容合并到一个文本文件中,上述问题便能得到解决。
目前一种较为实用的功能是:将多个小文件的内容合并到一个统一的目标文件中,并对原始文件进行重命名,以标记其已被处理。此前曾使用其他脚本语言实现此功能,现尝试使用Python编写,同时借此熟悉Python的文件处理命令。
原始文件

经过处理之后

最后还有一个因缩进产生的第一个回车符问题
该示例代码包含了文件的创建与移除、文件内容的读写操作,以及文件重命名的语法命令等。
示例代码
# -*- coding: utf-8 -*-
import os
import time
import datetime
def merge_file(file_path,file_name):
#file_path must exits
if(os.path.exists(file_path) is False):
print('file_path is not exists')
return
if(os.path.exists(os.path.join(file_path, file_name))):
os.remove(os.path.join(file_path, file_name))
#'%Y_%m_%d%H%M%S',创建一个以日期命名的文本文件
targetfilename = str(time.strftime('%Y%m%d%H%M%S'))+'.txt'
fobj = open(os.path.join(file_path, targetfilename), 'w')
fobj.close()
# a 是以追加的方式打开文件写入
with open(os.path.join(file_path, targetfilename), 'a', encoding='GBK') as f_wirte:
files = os.listdir(file_path)
for file in files:
print(os.path.join(file_path, file))
with open(file_path+'\\'+file, 'r', encoding='GBK') as f:
for line in f.readlines():
if(line.strip().__len__()) > 0:# 排除空行
f_wirte.write(line)
f_wirte.write('\n')# 每读完一个文件之后,加一个回车,否则第一个文件的最后一行跟第二个文件的第一行没有回车
# 文件合并之后,重命名原始的文件,
# os.path.splitext(file)[0] 提取文件名,不包括后缀名
# os.path.splitext(file)[1] 提取文件后缀名
if (file != targetfilename):
os.rename(os.path.join(file_path, file),os.path.join(file_path, os.path.splitext(file)[0] + '在_' +str(time.strftime('%Y%m%d%H%M%S')) +'_已处理' + '.txt'))
merge_file('D:\TestPythonMergeFile','auoto_create_a_category_file')
总结
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助。如果有疑问,大家可以留言交流,谢谢大家对本站的支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













