pythonファイルを行単位で読み込み、一部を置き換えます

1472 ワード

問題:一部のライブラリのバージョンの問題で、クラスの属性やクラス名が変更されることが多いため、変更する必要があります.この問題が一般的で、発生回数が多い場合は、スクリプトで操作する必要があります.
処理の考え方
  • まずファイルをバックアップします.
  • その後、読み取りモードでファイルを開き、行ごとに文字列が含まれているかどうかを判断し、文字列の置換を行い、ファイルを閉じます.
  • ファイルを書き込みモードで開き、行ごとに書き込めばいいです.

  • 今、一つのケースを記録します.
    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スクリプト言語の利点を柔軟に運用することで、作業効率を迅速に向上させ、いくつかの重複作業に対して、スクリプトを利用して私たちをよく助けることができます.