我有这个功能:
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尽管所有似乎工作正常并且打印实际上知道该做什么没有错误,文件中的信息仍然是相同的像我之前运行代码一样。
任何人都知道为什么?
答案 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)