欢迎加入QQ讨论群258996829
麦子学院 头像
苹果6袋
6
麦子学院

Python文件操作之合并文本文件内容

发布时间:2017-09-14 23:54  回复:0  查看:3162   最后回复:2017-09-14 23:54  

本文和大家分享的主要是python文件操作中合并文本文件内容相关内容,一起来看看吧,希望对大家学习python有所帮助。

  目前一个用的比较多的功能:将多个小文件的内容合并在一个统一的文件中,对原始文件重命名标记其已被处理过。

  之前使用其他脚本写的,尝试用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)[0] 提取文件后缀名

  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')

 

 

来源:博客园

您还未登录,请先登录

热门帖子

最新帖子