python - 如何重写文本文件中的一行?蟒蛇 3.7
问题描述
我正在尝试制作一个相对简单的游戏,将所有数据保存到 .txt 文件中。我必须存储帐户数据的文本文件使用如下简单格式:
Username
PIN
Balance
--
Username
PIN
Balance
--
等等等等。
我想做的只是改变余额值。目前,我看到的唯一方法是将每一行添加到列表中,更改余额值,然后将所有行一一重写回文本文件。
有没有更简单的方法来做到这一点?如果是这样,怎么做?
解决方案
这显然是一个非常简单的文件结构,因此它有它的局限性。在您拥有超过数万行之前,您可能不会注意到任何性能问题。正如评论中所说,在那之后你将需要一个更好的工具。
如果您继续使用此方法,您实际上不需要加载所有内容,并在更新值后将其保存回磁盘。
您可以同时流式读取文件并写回临时文件。一旦遇到需要更新的组,当然需要更新 Balance 值。完成更新后,您可以删除旧文件并用您的实际文件重命名临时文件。
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.