1

现在我正在使用包含以下信息的文件 .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]

到目前为止它工作得很好,但是因为这是一个聊天机器人,我希望能够直接从聊天中更改该变量的值,并且当我从聊天中调用“!启用校正器”时,我尝试了这个代码。

  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 似乎不接受我更改了一个变量,并且它仍然认为它是“禁用的”,而它已经“启用”了。在我重新启动程序之前,它不会将变量读取为“启用”。

我想知道是否有变量的刷新选项或解决方法来动态更改变量的值并使效果持续而无需重新启动。

4

1 回答 1

2

即时更改变量的值

此代码动态更改变量的值:

a = 1
a = 2

您的问题表明您希望能够通过计算名称查找值。解决方案是使用dict

mydict = {'corrector':0}
mydict['corrector'] = 1

如果要更改文件中的值,则需要根据您拥有的数据写出一个新文件。看起来您正在加载 json,因此该json模块将帮助您解决这个问题。

于 2013-08-27T20:24:59.877 回答