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

所属分类: 脚本专栏 / python 阅读数: 863
收藏 0 赞 0 分享

前言:前几天我看一位同学要修改很多文件中的数据,该文件数据很规律,一行只有三个数,需要将每行最后一个数字改为负数,但文件有上千个,分布在每个文件夹下面以及它的多级子文件夹下,看他用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调用C/C++的方法解析

这篇文章主要介绍了Python调用C/C++的方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

学习Python爬虫的几点建议

这篇文章主要介绍了学习Python爬虫的几点建议,对新手学习爬虫有很大的帮助,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

Python创建临时文件和文件夹

这篇文章主要介绍了Python如何创建临时文件和文件夹,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

浅析Python 序列化与反序列化

这篇文章主要介绍了Python 序列化与反序列化的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

8种常用的Python工具

这篇文章主要介绍了8种常用的Python工具,帮助大家更好的学习Python,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

python爬虫使用requests发送post请求示例详解

这篇文章主要介绍了python爬虫使用requests发送post请求示例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Python结合Window计划任务监测邮件的示例代码

这篇文章主要介绍了Python结合Window计划任务监测邮件的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Python用来做Web开发的优势有哪些

这篇文章主要介绍了Python用来做Web开发的优势有哪些,文中讲解非常细致,帮助大家更好的理解和学习Python,感兴趣的朋友可以了解下
收藏 0 赞 0 分享

如何解决pycharm调试报错的问题

在本篇内容里小编给大家整理的是一篇关于如何解决pycharm调试报错的问题文章,需要的朋友们可以学习参考下。
收藏 0 赞 0 分享

基于logstash实现日志文件同步elasticsearch

这篇文章主要介绍了基于logstash实现日志文件同步elasticsearch,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多