代码之家  ›  专栏  ›  技术社区  ›  Saelyth

为什么不更新文件?

  •  0
  • Saelyth  · 技术社区  · 12 年前

    我得到了这个功能:

      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 回复  |  直到 12 年前
        1
  •  1
  •   Cold Diamondz    12 年前

    据我所知,您必须关闭该文件才能更新数据,例如,我的C驱动器中有文件“xyz.txt”:

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

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

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

        2
  •  0
  •   Saelyth    12 年前

    doh我忘了更新这个线程,但我设法找到了问题,不知怎么的,var“data”的名称造成了一个问题,不知道为什么。。。我一改就一切顺利。