問題:由於一些庫的版本的問題,往往一些類的屬性或者類名稱發生了變化,我們需要進行修改。如果這個問題很普遍,出現次數較多,我們需要用腳本進行操作。
處理思路
- 首先將文件進行備份。
- 然後讀模式打開某個文件,然後逐行判斷是否包含某字符串,進行字符串替換,然後關閉文件。
- 再以寫模式打開文件,然後逐行寫入就行。
現在記錄一下一個案例。
import os
from multiprocessing import Process
#----first backup the file
filename=r'F:\ohem\tools\..\lib\roi_data_layer\layer.py'
_str = 'param_str_'
_str_new = 'param_str'
lenth = len(_str)
all_line=[]
def copyfile(file):
cmd = 'copy '+file+" "+file+".bak"
res=os.popen(cmd)
if __name__ == '__main__':
# 用到進程的方法,需要等這個拷貝的子進程執行完了,再執行主進程
Process(target=copyfile(filename)).start()
f = open(filename,'r')
line = f.readline()
while line:
index = line.find(_str)
if index!=-1:
print(index)
print(line[index:index+lenth])
line=line.replace(_str,_str_new)
print(line)
all_line.append(line)
line = f.readline()
#print(all_line)
f.close()
f1 =open(filename,'w')
for line in all_line:
f1.write(line)
f1.close()
這裏需要注意的一點是用到了進程,因爲我們這裏調用的是命令行進行復制文件的操作。所以需要等這個進程執行完成之後,再執行後面的內容,否則沒有將源文件進行備份,如果出錯了,將追悔莫及。
總結:
靈活運用python 腳本語言的優勢,可以幫助我們很快的提升工作效率,對於一些重複性的工作,可以利用腳本很好的幫助我們進行完成。