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

しかし、ここに問題があります: ファイルは更新されませんでした。451 ではなく 461 が表示されますが、すべて正常に動作しているように見え、印刷はエラーなしで何をすべきかを実際に認識しています。ファイル内の情報は以前と同じままです。コードを実行します。

誰でも理由を知っていますか?

4

2 に答える 2

1

私の理解では、データを更新するにはファイルを閉じる必要があるため、たとえば、C ドライブに「xyz.txt」というファイルがあります。

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

を実行する前x.close()は、ファイルは空です。

注: 偶発的なエスケープ コードを防ぐために、 2 つのバックスラッシュ ( \\) を使用するか、文字列の前に "r" を付けます ( )。r"tes\t"

于 2013-10-14T01:44:51.093 に答える
0

このスレッドを更新するのを忘れていましたが、どうにかして問題を見つけることができました。どういうわけか、変数「データ」の名前が問題を引き起こしていました。理由はわかりません...そして、変更するとすぐにすべてがうまくいきました。

于 2013-10-30T00:52:09.107 に答える