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中将阿拉伯数字转换成中文的实现代码
May 19 Python
Python实现将不规范的英文名字首字母大写
Nov 15 Python
python字符串str和字节数组相互转化方法
Mar 18 Python
python3 图片referer防盗链的实现方法
Mar 12 Python
Python Selenium 之关闭窗口close与quit的方法
Feb 13 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
May 03 Python
Python Pandas 如何shuffle(打乱)数据
Jul 30 Python
Python绘制股票移动均线的实例
Aug 24 Python
Python tkinter和exe打包的方法
Feb 05 Python
python实现udp聊天窗口
Mar 31 Python
浅谈python量化 双均线策略(金叉死叉)
Jun 03 Python
基于python实现简单C/S模式代码实例
Sep 14 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 smarty的预保留变量总结
2008/12/04 PHP
php str_pad 函数用法简介
2009/07/11 PHP
PHP 循环列出目录内容的函数代码
2010/05/26 PHP
利用php下载xls文件(自己动手写的)
2014/04/18 PHP
php获取远程文件大小
2015/10/20 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
javascript基础知识大集锦(一) 推荐收藏
2011/01/13 Javascript
textarea 控制输入字符字节数(示例代码)
2013/12/27 Javascript
JS图片自动轮换效果实现思路附截图
2014/04/30 Javascript
js中定义一个变量并判断其是否为空的方法
2014/05/13 Javascript
js获取IP地址的方法小结
2014/07/01 Javascript
jquery实现显示已选用户
2014/07/21 Javascript
sogou地图API用法实例教程
2014/09/11 Javascript
JavaScript实现定时隐藏与显示图片的方法
2015/08/06 Javascript
jQuery实现伪分页的方法分享
2016/02/17 Javascript
js实现目录链接,内容跟着目录滚动显示的简单实例
2016/10/15 Javascript
快速处理vue渲染前的显示问题
2018/03/05 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
electron踩坑之remote of undefined的解决
2020/10/06 Javascript
jQuery实现计算器功能
2020/10/19 jQuery
[39:00]Optic vs VP 2018国际邀请赛淘汰赛BO3 第三场 8.24
2018/08/25 DOTA
python飞机大战游戏实例讲解
2020/12/04 Python
matplotlib部件之套索Lasso的使用
2021/02/24 Python
有影响力的品牌之家:Our Social Collective
2019/06/08 全球购物
bonprix匈牙利:女士、男士和儿童服装
2019/07/19 全球购物
法国在线药房:1001Pharmacies
2021/03/07 全球购物
校园创业策划书
2014/01/14 职场文书
三年大学生活自我鉴定
2014/01/21 职场文书
装修设计师求职信
2014/02/26 职场文书
人力资源部经理助理岗位职责
2014/03/04 职场文书
工程类专业自荐信范文
2014/03/09 职场文书
介绍信格式
2015/01/30 职场文书
2015年社区创卫工作总结
2015/04/21 职场文书
女性健康讲座主持词
2015/07/04 职场文书