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 相关文章推荐
在Django的form中使用CSS进行设计的方法
Jul 18 Python
Python 加密的实例详解
Oct 09 Python
Python Socket使用实例
Dec 18 Python
Python不同目录间进行模块调用的实现方法
Jan 29 Python
Python requests模块实例用法
Feb 11 Python
我用Python抓取了7000 多本电子书案例详解
Mar 25 Python
python获取微信企业号打卡数据并生成windows计划任务
Apr 30 Python
基于python及pytorch中乘法的使用详解
Dec 27 Python
python使用信号量动态更新配置文件的操作
Apr 01 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
Apr 30 Python
python爬取抖音视频的实例分析
Jan 19 Python
Python中Qslider控件实操详解
Feb 20 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
php set_magic_quotes_runtime() 函数过时解决方法
2010/07/08 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
CodeIgniter中实现泛域名解析
2014/07/19 PHP
PHP实现自动对图片进行滚动显示的方法
2015/03/12 PHP
5款适合PHP使用的HTML编辑器推荐
2015/07/03 PHP
详解WordPress中添加和执行动作的函数使用方法
2015/12/29 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
2017/02/08 PHP
javascript String 对象
2008/04/25 Javascript
JS在IE下缺少标识符的错误
2014/07/23 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
javascript相关事件的几个概念
2015/05/21 Javascript
js实现大转盘抽奖游戏实例
2015/06/24 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
vue2+el-menu实现路由跳转及当前项的设置方法实例
2017/11/07 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
Vue两个版本的区别和使用方法(更深层次了解)
2020/02/16 Javascript
js找出5个数中最大的一个数和倒数第二大的数实现方法示例小结
2020/03/04 Javascript
[01:35]2018年度CS GO最佳战队-完美盛典
2018/12/17 DOTA
python通过floor函数舍弃小数位的方法
2015/03/17 Python
python简单实现获取当前时间
2016/08/27 Python
python生成tensorflow输入输出的图像格式的方法
2018/02/12 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
2018/05/26 Python
10分钟用python搭建一个超好用的CMDB系统
2019/07/17 Python
python logging模块书写日志以及日志分割详解
2019/07/22 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
2019/08/15 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
2020/11/02 Python
Perricone MD裴礼康美国官网:抗衰老护肤品
2016/09/26 全球购物
EVE LOM英国官网:全世界最好的洁面膏
2017/10/30 全球购物
英国赛车、汽车改装和摩托车零件购物网站:Demon Tweeks
2018/10/29 全球购物
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
优秀志愿者事迹材料
2014/02/03 职场文书
个人党性剖析材料
2014/02/03 职场文书
2014年“世界无车日”活动方案
2014/09/21 职场文书
教师作风整改措施思想汇报
2014/10/12 职场文书