国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > Python > 正文

python批量替換多文件字符串問(wèn)題詳解

2020-02-22 23:48:58
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

系統(tǒng)如下:

操作系統(tǒng) : CentOS7.3.1611_x64

Python 版本 : 2.7.5

問(wèn)題描述

編碼過(guò)程中有時(shí)候會(huì)遇到在多個(gè)源文件中存在同一個(gè)變量名(比如 : writeBuffer),需要替換為新的變量名(比如 : write_buffer)的問(wèn)題。 怎么能方便快捷的解決該問(wèn)題呢?

解決方案

使用sed

sed和grep結(jié)合使用可以替換當(dāng)前文件夾多個(gè)文件的內(nèi)容。

格式 :

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

示例代碼:

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

使用Python

使用Python腳本可以實(shí)現(xiàn)替換當(dāng)前文件夾多個(gè)文件的內(nèi)容。

替換單個(gè)文件的代碼如下:

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

替換多個(gè)文件僅需添加目錄遍歷代碼。

完整示例代碼如下:

#! /usr/bin/python#-*- coding: utf-8 -*- import os,sysdef 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 Nonedef 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 Noneif __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)

添加可執(zhí)行權(quán)限:

chmod a+x replaceMulti.py

使用示例:

./replaceMulti.py writeBuffer write_buffer

將當(dāng)前文件夾中所有 writeBuffer 替換為 write_buffer

也可以將 replaceMulti.py 放入 /usr/local/bin/ 目錄:

[root@local ~]# mv replaceMulti.py /usr/local/bin/[root@local ~]# replaceMulti.pyusage : replaceMulti srcStr dstStrreplace current dir files[root@local ~]#

該腳本在windows下也可以使用,將 replaceMulti.py 所在目錄加入環(huán)境變量即可。

好,就這些了,希望對(duì)你有幫助。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)武林站長(zhǎng)站的支持。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 香港| 朝阳县| 新竹县| 陕西省| 太仆寺旗| 高州市| 河北区| 明星| 房山区| 开阳县| 休宁县| 延津县| 贵德县| 三明市| 瑞金市| 临朐县| 光山县| 怀化市| 柘荣县| 海口市| 四会市| 太湖县| 藁城市| 嘉义市| 那坡县| 华宁县| 丹江口市| 林州市| 叶城县| 灵宝市| 黄陵县| 湖北省| 娱乐| 柳江县| 寻乌县| 高青县| 沙雅县| 建水县| 堆龙德庆县| 黑龙江省| 大同县|