为什么不更新文件?

时间:2013-10-13 15:46:58

标签: python json file updating

我有这个功能:

  def restapuntos(precio, usuario ,saladondeocurre):
    print("Function started")
    data = []
    with open("listas\estadisticas\Trivial-"+saladondeocurre+".txt", "r+") as f:
      for line in f:
        data_line = json.loads(line)
        if data_line[0] == usuario:
          print("User: "+user.name+", removing "+str(precio)+" from "+str(data_line[1]))
          data_line[1] = data_line[1]-precio
        data.append(data_line)
      f.seek(0)
      f.writelines(["%s\n" % json.dumps(i) for i in data])
      f.truncate()
    print("Function has been used")

使用以下方式调用:

Myclass.restapuntos(10, user.name, room.name)

3张照片告诉我:

Function started
User: saelyth, removing 10 from 461
Function has been used

但问题是:文件没有更新,它仍然显示461而不是451尽管所有似乎工作正常并且打印实际上知道该做什么没有错误,文件中的信息仍然是相同的像我之前运行代码一样。

任何人都知道为什么?

2 个答案:

答案 0 :(得分:1)

根据我的理解,你必须关闭文件以便更新数据,例如,我的C盘中有“xyz.txt”文件:

x = open("C:\\xyz.txt", "r+")
x.read()
x.write("test")
x.close()

在运行x.close()之前,该文件将为空。

注意: 使用两个反斜杠(\\)或在字符串(r"tes\t")前放置“r”以防止意外转义码。

答案 1 :(得分:0)

我忘了更新这个帖子,但我设法找到了问题,不知何故var“数据”的名称正在创建一个问题,不明白为什么......一旦我改变它就一切顺利。