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

  

  

操作系统: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批量替换多文件字符串问题详解