現在、次の情報を含むファイル .txt を使用しています。
["corrector", "Enabled"]
["Inteligencia", "Enabled"]
次に、私のpythonプログラムでは、最初にそのデータを次のようにロードします。
for line in open("menu.txt", 'r'):
retrieved = json.loads(line)
if retrieved[0] == "corrector":
corrector = retrieved[1]
if retrieved[0] == "Inteligencia":
Inteligencia = retrieved[1]
これまでのところ完璧に動作しますが、これはチャットボット用であるため、その変数の値をチャットから直接変更できるようにしたいと考えており、チャットから「!Enable corrector」を呼び出したときにこのコードを試しました。
if corrector == "Enabled":
room.message("ERROR: Already Enabled")
else:
data = []
with open('menu.txt', 'r+') as f:
for line in f:
data_line = json.loads(line)
if data_line[0] == "corrector":
data_line[1] = "Enabled"
data.append(data_line)
f.seek(0)
f.writelines(["%s\n" % json.dumps(i) for i in data])
f.truncate()
room.message("corrector enabled")
それも機能し、.txt ファイルを開くと、値が既に変更されていることがわかります。本当の問題は、Pythonが変数を変更したことを受け入れていないようで、すでに「有効」になっているにもかかわらず、「無効」であるとまだ考えていることです。プログラムを再起動するまで、変数は「有効」として読み取られません。
変数の更新オプションや、その場で変数の値を変更して再起動せずに効果を持続させる回避策があるかどうか疑問に思っていました。