python批量替换多文件字符串问题详解


Posted in Python onApril 22, 2018

系统如下:

操作系统 : CentOS7.3.1611_x64

Python 版本 : 2.7.5

问题描述

编码过程中有时候会遇到在多个源文件中存在同一个变量名(比如 : writeBuffer),需要替换为新的变量名(比如 : write_buffer)的问题。 怎么能方便快捷的解决该问题呢?

解决方案

使用sed

sed和grep结合使用可以替换当前文件夹多个文件的内容。

格式 :

sed -i 's/原字符串/新字符串/g' `grep  -rl 原字符串 所在目录`

示例代码:

sed -i 's/writeBuffer/write_buffer/g' `grep -rl writeBuffer  ./*`

使用Python

使用Python脚本可以实现替换当前文件夹多个文件的内容。

替换单个文件的代码如下:

def doReplace(fpath,src,dst):
 newConent,bFlag = "",False
 with open(fpath,"rb") as fin:
 for line in fin :
  if line.find(src) == -1 :
  newLine = line
  else:
  bFlag = True
  newLine = line.replace(src,dst)
  newConent += newLine
 if not bFlag : return None
 print fpath
 with open(fpath,"wb") as fout:
 fout.write(newConent)
 return None

替换多个文件仅需添加目录遍历代码。

完整示例代码如下:

#! /usr/bin/python
#-*- coding: utf-8 -*- 

import os,sys

def doReplace(fpath,src,dst):
 newConent,bFlag = "",False
 with open(fpath,"rb") as fin:
 for line in fin :
  #if len(line.strip()) == 0 : continue
  if line.find(src) == -1 :
  newLine = line
  else:
  bFlag = True
  newLine = line.replace(src,dst)
  newConent += newLine
 if not bFlag : return None
 print fpath
 with open(fpath,"wb") as fout:
 fout.write(newConent)
 return None

def replaceMain(dirName,src,dst):
 for root, dirs, files in os.walk(dirName):
 for name in files:
  fpath = os.path.join(root, name)
  doReplace(fpath,src,dst)
 return None

if __name__ == "__main__":
 if len(sys.argv) < 3 :
 print "usage : replaceMulti srcStr dstStr"
 print "replace current dir files"
 sys.exit(1)
 srcStr = sys.argv[1]
 dstStr = sys.argv[2]
 dirName = "."
 dirName = os.path.realpath(dirName)
 print "working dir :",dirName
 replaceMain(dirName,srcStr,dstStr)

添加可执行权限:

chmod a+x replaceMulti.py

使用示例:

./replaceMulti.py writeBuffer write_buffer

将当前文件夹中所有 writeBuffer 替换为 write_buffer

也可以将 replaceMulti.py 放入 /usr/local/bin/ 目录:

[root@local ~]# mv replaceMulti.py /usr/local/bin/
[root@local ~]# replaceMulti.py
usage : replaceMulti srcStr dstStr
replace current dir files
[root@local ~]#

该脚本在windows下也可以使用,将 replaceMulti.py 所在目录加入环境变量即可。

好,就这些了,希望对你有帮助。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python转换摩斯密码示例
Feb 16 Python
一个基于flask的web应用诞生 flask和mysql相连(4)
Apr 11 Python
TensorFlow数据输入的方法示例
Jun 19 Python
Python socket实现的简单通信功能示例
Aug 21 Python
在pycharm中python切换解释器失败的解决方法
Oct 29 Python
python贪吃蛇游戏代码
Apr 18 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
Apr 05 Python
python3.4 将16进制转成字符串的实例
Jun 12 Python
Django 外键的使用方法详解
Jul 19 Python
Python配置文件处理的方法教程
Aug 29 Python
Pytorch中实现只导入部分模型参数的方式
Jan 02 Python
Python读入mnist二进制图像文件并显示实例
Apr 24 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
Apr 22 #Python
Python3.6笔记之将程序运行结果输出到文件的方法
Apr 22 #Python
Python解决八皇后问题示例
Apr 22 #Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
Apr 22 #Python
对python中raw_input()和input()的用法详解
Apr 22 #Python
对Python3中的input函数详解
Apr 22 #Python
Python实现中一次读取多个值的方法
Apr 22 #Python
You might like
用 PHP5 轻松解析 XML
2006/12/04 PHP
php表单提交问题的解决方法
2011/04/12 PHP
PHP中如何判断AJAX提交的数据
2012/02/05 PHP
thinkphp备份数据库的方法分享
2015/01/04 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
情人节之礼 js项链效果
2012/02/13 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
js 通过html()及text()方法获取并设置p标签的显示值
2014/05/14 Javascript
js生成的验证码的实现与技术分析
2014/09/17 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
常用的Javascript数据验证插件
2015/08/04 Javascript
js限制文本框只能输入中文的方法
2015/08/11 Javascript
EasyUi 打开对话框后控件赋值及赋值后不显示的问题解决办法
2017/01/19 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
js 中rewrap-ajax.js插件实例代码
2017/10/20 Javascript
深入浅出理解JavaScript高级定时器原理与用法
2018/08/02 Javascript
移动端图片上传旋转、压缩问题的方法
2018/10/16 Javascript
Django+vue跨域问题解决的详细步骤
2019/01/20 Javascript
精读《Vue3.0 Function API》
2020/05/20 Javascript
零基础写python爬虫之爬虫框架Scrapy安装配置
2014/11/06 Python
python从sqlite读取并显示数据的方法
2015/05/08 Python
总结Python编程中函数的使用要点
2016/03/20 Python
EM算法的python实现的方法步骤
2018/01/02 Python
详解flask表单提交的两种方式
2018/07/21 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
详解利用canvas实现环形进度条的方法
2019/06/12 HTML / CSS
KEEN美国官网:美国人气户外休闲鞋品牌
2021/03/09 全球购物
New delete 与malloc free 的联系与区别
2013/02/04 面试题
策划主管的工作职责
2013/11/24 职场文书
酒店个人求职信范文
2014/01/25 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
走进科学观后感
2015/06/18 职场文书
采购部年度工作总结
2015/08/13 职场文书
社区服务理念口号
2015/12/25 职场文书
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python