Python如何动态更改变量的值

时间:2013-08-27 20:20:22

标签: python variables mutable

现在我正在使用包含以下信息的文件.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似乎并不接受我改变了一个变量,它仍然认为它已被“禁用”,而它已经“启用”了。在重新启动程序之前,它不会将变量读取为“已启用”。

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

1 个答案:

答案 0 :(得分:2)

  

动态更改变量的值

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

a = 1
a = 2

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

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

如果要更改文件中的值,则需要根据所拥有的数据写出新文件。看起来你正在加载json,所以json模块会帮你解决这个问题。