0

我得到了这个功能:

  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,尽管一切似乎都工作正常,打印实际上知道该怎么做没有错误,文件中的信息仍然与之前相同我运行代码。

有谁知道为什么?

4

2 回答 2

1

据我了解,您必须关闭文件才能更新数据,例如,我的 C 盘中有文件“xyz.txt”:

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

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

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

于 2013-10-14T01:44:51.093 回答
0

我忘了更新这个线程,但我设法找到了问题,不知何故,var“数据”的名称造成了一个问题,不知道为什么......一旦我改变它就一切顺利。

于 2013-10-30T00:52:09.107 回答