Python实现多文本文件合并与重命名处理示例

Jasper
Jasper
发布时间:2026-10-13 | 2人浏览过
原创

本文介绍使用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')

总结

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助。如果有疑问,大家可以留言交流,谢谢大家对本站的支持。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表