Сейчас я работаю с файлом .txt с этой информацией:Python, как изменить значение переменной на лету
["corrector", "Enabled"]
["Inteligencia", "Enabled"]
Тогда в моей питона программе загружает эти данные в самом beggining, таким образом:
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]
до сих пор она работает идеально, однако, как это чат-бот, я хочу, чтобы сделать возможным изменить значение того, что переменные непосредственно из чата, и я попробовал этот код, когда я называю «Включить корректор» из чата.
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, похоже, не согласился с тем, что я изменил переменную, и она по-прежнему считает, что она «отключена», хотя она уже «включена». Он не будет читать переменную как «включен», пока я не перезапущу программу.
Мне было интересно, есть ли опция обновления для переменных или обходной путь, чтобы изменить значение переменных «на лету» и заставить эффект длиться без перезагрузки.
Возможный дубликат [динамическая переменная] (http://stackoverflow.com/questions/10963804/dynamic-variable) – Marcin
Переменные не привязаны к тому месту, откуда они пришли; похоже, существует фундаментальное непонимание того, что такое «переменная». Вы должны снова прочитать файл. – Izkata
Возможный дубликат [Как создать неизвестное количество переменных в python] (http://stackoverflow.com/questions/17685199/how-to-create-an-unknown-amount-of-variables-in-python) – abarnert