既存のファイルの内容を書き換える(os, shutilモジュール)

GUI画面で定義した変数の値を、ファイルにすでに記録されている値と入れ替える。その場合の文字列処理を次のように行った。

import os
import shutil
import Util          # Utilファイルに新しい変数値を入れておく

def RecordVariables(path):
    filepath = os.path.join(path, 'DEFVAL')      #DEFVALに変数を定義してある
    copypath = os.path.join(path, 'DEFVAL.org') #オリジナルのファイルを保存する
    shutil.copyfile(filepath, copypath)     #ファイルのコピー
    
    pfile = open(copypath, 'r')
    S = pfile.readlines()         # ファイルの内容をリストとして取り出す
    pfile.close()

    for s in S:
        if s.find('VAL1') != -1 and s[0] != '#':   # コメント行(#)は省く
            linen = S.index(s)
            eqindx = s.find('=')                        # "VAL1 = 値"の形でデータは記録
            S[linen] = s[:eqindx+1] + Util.val1 + '\n'  # Util.val1が新しい値

    pfile = open(filepath, 'w')          #書き出すファイルをオープンする
    pfile.writelines(S)         #文字列を書き出す
    pfile.close()

”変数名=値\n”の形で記録してあるものを読み込んで、”=”以降を新しい値と入れ替えた。
最後に”\n”を加えて、リストSの要素を更新する。