python批量修改文件夹及其子文件夹下的文件内容

yipeiwu_com6年前Python基础

前言:前几天我看一位同学要修改很多文件中的数据,该文件数据很规律,一行只有三个数,需要将每行最后一个数字改为负数,但文件有上千个,分布在每个文件夹下面以及它的多级子文件夹下,看他用excel手动改数据改的很痛苦,我突然想到用Python访问和操作文件,修改文件内容都很方便,于是在对Python不熟悉的情况下花了大半天写了下面的程序。

大概思路:先获取文件夹下所有文件名存在列表中,然后循环遍历访问文件内容,修改后写入新文件,考虑到还有子文件夹,这里用了递归的方法访问子文件夹的文件,最后修改完再把原文件删除,将新文件修改为原文件名,具体程序功能见代码注释。

完整代码:

#coding=utf-8#可加入中文注释
#函数功能:将指定文件夹下所有文件和子文件夹下的文件遍历,并修改文件内容
import os
fpath ="/home/hyj/桌面/files_1"#这里是你的第一级文件夹的路径
def filechanger(path):
 filenames = os.listdir(path)#将path路径下的所有文件名存入列表filenames 
 for filename in filenames:#循环遍历每个文件
 domain = os.path.abspath(path)#获取规范的路径
 filename = os.path.join(domain,filename)#带路径的文件名
 if os.path.isdir(filename): # 如果是文件夹进入递归
  filechanger(filename)
  continue
 fread = open(filename,'r')
 fwrite = open("%s.backup"%filename,'w')
 while True:#修改文件内容
  line=fread.readline()#按行读取内容
  if len(line)>0:#当改行为空,表明已经读取到文件末尾,退出循环
  content = line.split()#因为每行有三个TAB符号分开的数字,将它们分开
  print(content)
  content[2] = '-'+content[2]
  print(content)
  newcont = content[0]+'\t'+content[1]+'\t'+content[2]+'\r'
  fwrite.write(newcont)#修改后写入新文件
  else:
  break
 fread.close()
 fwrite.close()
 os.remove(filename)#如果想更改数据后想保留原文件以及修改文件名可屏蔽这一句和下一句
 os.rename("%s.backup" % filename, filename)#
filechanger(fpath)

修改前

第1级文件夹及文件内容


第2级文件夹及文件内容


第3级文件夹及文件内容


修改后文件内容


如果想更改数据后想保留原文件以及修改文件名,可屏蔽代码中的两句话

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python实现获取本地及远程图片大小的方法示例

Python实现获取本地及远程图片大小的方法示例

本文实例讲述了Python实现获取本地及远程图片大小的方法。分享给大家供大家参考,具体如下: 了解过Pillow的都知道,Pillow是一个非常强大的图片处理器,这篇文章主要记录一下Pi...

SELENIUM自动化模拟键盘快捷键操作实现解析

SELENIUM自动化模拟键盘快捷键操作实现解析

这篇文章主要介绍了SELENIUM自动化模拟键盘快捷键操作实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 平常我们会用到很多快...

python网络编程学习笔记(七):HTML和XHTML解析(HTMLParser、BeautifulSoup)

一、利用HTMLParser进行网页解析 具体HTMLParser官方文档可参考http://docs.python.org/library/htmlparser.html#HTMLPa...

OpenCV哈里斯(Harris)角点检测的实现

OpenCV哈里斯(Harris)角点检测的实现

环境 pip install opencv-python==3.4.2.16 pip install opencv-contrib-python==3.4.2.16 理论 克里...

详解如何从TensorFlow的mnist数据集导出手写体数字图片

详解如何从TensorFlow的mnist数据集导出手写体数字图片

在TensorFlow的官方入门课程中,多次用到mnist数据集。 mnist数据集是一个数字手写体图片库,但它的存储格式并非常见的图片格式,所有的图片都集中保存在四个扩展名为idx3-...