python 逐行讀取文件,並替換某些內容

問題:由於一些庫的版本的問題,往往一些類的屬性或者類名稱發生了變化,我們需要進行修改。如果這個問題很普遍,出現次數較多,我們需要用腳本進行操作。

處理思路

  1. 首先將文件進行備份。
  2. 然後讀模式打開某個文件,然後逐行判斷是否包含某字符串,進行字符串替換,然後關閉文件。
  3. 再以寫模式打開文件,然後逐行寫入就行。

現在記錄一下一個案例。

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 腳本語言的優勢,可以幫助我們很快的提升工作效率,對於一些重複性的工作,可以利用腳本很好的幫助我們進行完成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章