Python ファイル内に指定文字列があれば、その一行を書き換える

# '19/11/09更新:コードの可読性を若干良くした
ファイル内を1行ずつ検索してゆき、予め指定した単語があればその行を指定文字列の1行で書き換える。本プログラムの仕様は、下図左を右のようにファイルを書き換える。

f:id:HK29:20180312011952p:plain

 上書きしたくなければ、下記f2でopenするファイル名を違うファイル名にすれば良い。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import os, sys

def replace_func(fname, replace_set):
    target, replace = replace_set
    
    with open(fname, 'r') as f1:
        tmp_list =[]
        for row in f1:
            if row.find(target) != -1:
                tmp_list.append(replace)
            else:
                tmp_list.append(row)
    
    with open(fname, 'w') as f2:
        for i in range(len(tmp_list)):
            f2.write(tmp_list[i])

if __name__ == '__main__':  #このファイルを本体として実行した場合、mainが実行される。
    # param set
    fname = './test.txt'
    replace_setA = ('ccc =', 'ccc = 100\n') # (検索する文字列, 置換後の文字列)
    replace_setB = ('ddd =', 'ddd = N/A\n') # 最後の\nは改行コード
    
    # call func
    replace_func(fname, replace_setA)
    replace_func(fname, replace_setB)

以上