国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 泌阳县| 三穗县| 古浪县| 新野县| 西青区| 旺苍县| 石泉县| 剑川县| 额济纳旗| 兰考县| 昭觉县| 大连市| 武定县| 邢台县| 吴江市| 郧西县| 高州市| 叶城县| 安塞县| 兰州市| 仁怀市| 新郑市| 临海市| 龙岩市| 阿拉善盟| 右玉县| 常熟市| 阿拉善左旗| 盘山县| 伊吾县| 青阳县| 平安县| 惠安县| 拉孜县| 安阳市| 灵丘县| 望都县| 甘肃省| 眉山市| 郸城县| 丹阳市|