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


Posted in Python onMarch 15, 2019

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

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

第2级文件夹及文件内容

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

第3级文件夹及文件内容

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

修改后文件内容

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

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

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python切换pip安装源的方法详解
Nov 18 Python
python getopt详解及简单实例
Dec 30 Python
Python构建网页爬虫原理分析
Dec 19 Python
Python+Django搭建自己的blog网站
Mar 13 Python
对python中的iter()函数与next()函数详解
Oct 18 Python
Python使用post及get方式提交数据的实例
Jan 24 Python
Python 使用Numpy对矩阵进行转置的方法
Jan 28 Python
Python3列表内置方法大全及示例代码小结
May 10 Python
python实现机器人卡牌
Oct 06 Python
Python爬虫过程解析之多线程获取小米应用商店数据
Nov 14 Python
使用Python脚本对GiteePages进行一键部署的使用说明
May 27 Python
Python+OpenCV实现图片中的圆形检测
Apr 07 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
Mar 14 #Python
详解Django+uwsgi+Nginx上线最佳实战
Mar 14 #Python
TensorFlow卷积神经网络之使用训练好的模型识别猫狗图片
Mar 14 #Python
Python通过TensorFlow卷积神经网络实现猫狗识别
Mar 14 #Python
python3实现钉钉消息推送的方法示例
Mar 14 #Python
详解Python做一个名片管理系统
Mar 14 #Python
在Python中使用Neo4j的方法
Mar 14 #Python
You might like
php中require和require_once的区别说明
2014/02/27 PHP
利用谷歌 Translate API制作自己的翻译脚本
2014/06/04 PHP
ThinkPHP3.1新特性之Action参数绑定
2014/06/19 PHP
php堆排序实现原理与应用方法
2015/01/03 PHP
javascript获取当前ip的代码
2009/05/10 Javascript
关于js获取radio和select的属性并控制的代码
2011/05/12 Javascript
jQuery使用之处理页面元素用法实例
2015/01/19 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
Javascript实现图片轮播效果(二)图片序列节点的控制实现
2016/02/17 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
JS/HTML5游戏常用算法之碰撞检测 包围盒检测算法详解【矩形情况】
2018/12/13 Javascript
解决小程序无法触发SESSION问题
2020/02/03 Javascript
[40:50]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS LGD第四场
2014/05/24 DOTA
[02:12]探秘2016国际邀请赛中国区预选赛选手房间
2016/06/25 DOTA
[50:27]OG vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.26
2018/08/30 DOTA
[01:34]DOTA2 7.22版本新增神杖效果一览(敏捷英雄篇)
2019/05/28 DOTA
[01:25:33]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第二场 12.20
2020/12/23 DOTA
Python实现二分法算法实例
2015/02/02 Python
Python实现基于二叉树存储结构的堆排序算法示例
2017/12/08 Python
Python跨文件全局变量的实现方法示例
2017/12/10 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
Python使用progressbar模块实现的显示进度条功能
2018/05/31 Python
Tensorflow中的placeholder和feed_dict的使用
2018/07/09 Python
python中import与from方法总结(推荐)
2019/03/21 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
python matplotlib库的基本使用
2020/09/23 Python
美国高端寝具品牌:Coyuchi
2017/02/08 全球购物
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
造型师求职自荐信
2013/09/27 职场文书
社会实践评语
2014/04/28 职场文书
学生考试舞弊检讨书
2015/01/01 职场文书
选调生挂职锻炼工作总结
2015/10/23 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
拥有这5个特征人,“命”都不会太差
2019/08/16 职场文书
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python