我正在尝试制作一个相对简单的游戏,将所有数据保存到.txt文件中。我必须存储帐户数据的文本文件使用一种简单的格式,如下所示:
Username
PIN
Balance
--
Username
PIN
Balance
--
等等等等
我想做的就是更改余额值。目前,我看到的唯一方法是将每行添加到列表中,更改余额值,然后将所有行一一重写为文本文件。
有更简单的方法吗?如果可以,怎么办?
答案 0 :(得分:0)
那显然是一个非常简单的文件结构,因此有其局限性。除非您拥有成千上万的行,否则您可能不会注意到任何性能问题。如评论中所述,此后您将需要一个更好的工具。
如果继续使用此方法,则实际上不需要加载所有内容,而是在更新值之后将其保存回磁盘。
您可以流式读取文件并同时写回临时文件。进入该组后,您需要更新,您当然需要更新“余额”值。完成更新后,您可以删除旧文件,并用实际文件重命名临时文件。
with open('input.txt') as original, open('output.txt', 'w') as target:
while True:
label1 = original.readline()
pin = original.readline()
label2 = original.readline()
balance = original.readline()
if pin.strip('\n') == 'PIN':
balance = 'new-balance\n'
target.writelines([label1, pin, label2, balance])
if not balance:
break
# Delete original and rename new file.