操作系统: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=" ",假的 张开(fpath rb)翅片: 在鳍线: 如果line.find (src)==1: 换行符=线 其他: bFlag=True 换行符=line.replace (src, dst) newConent +=换行符 如果不是bFlag:还没有 打印fpath 张开(fpath,“世界银行”)作为输出信号: fout.write (newConent) 返回所有替换多个文件仅需添加目录遍历代码。
完整示例代码如下:
# !/usr/bin/python # - * -编码:utf - 8 - * 导入系统,系统 def doReplace (fpath src, dst): newConent bFlag=" ",假的 张开(fpath rb)翅片: 在鳍线: #如果len (line.strip())==0:继续 如果line.find (src)==1: 换行符=线 其他: bFlag=True 换行符=line.replace (src, dst) newConent +=换行符 如果不是bFlag:还没有 打印fpath 张开(fpath,“世界银行”)作为输出信号: fout.write (newConent) 回来没有 def replaceMain (src目录名,dst): 在os.walk dirs,根文件(目录名): 名字的文件: fpath=os.path。加入(根,名称) doReplace (fpath src, dst) 回来没有 if __name__==癬_main__”: 如果len (sys.argv) & lt;3: 打印”用法:replaceMulti srcStr dstStr” 打印”取代当前dir文件” sys.exit (1) srcStr=sys.argv [1] dstStr=sys.argv [2] 目录名="。" 目录名=os.path.realpath(目录名) 打印”工作dir:”,目录名 replaceMain(目录名,srcStr dstStr)添加可执行权限:
chmod + x replaceMulti.py使用示例:
/replaceMulti。py writeBuffer write_buffer将当前文件夹中所有writeBuffer替换为write_buffer
也可以将replaceMulti。py放入/usr/local/bin/目录:
# mv replaceMulti root@local ~。py/usr/local/bin/# replaceMulti.py root@local ~ 用法:replaceMulti srcStr dstStr 替换当前dir文件 (root@local ~) #该脚本在windows下也可以使用,将replaceMulti。py所在目录加入环境变量即可。
好,就这些了,希望对你有帮助。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对的支持。
python批量替换多文件字符串问题详解