如何重写文本文件中的一行? Python 3.7

时间:2018-08-23 06:06:17

标签: python python-3.x python-3.7

我正在尝试制作一个相对简单的游戏,将所有数据保存到.txt文件中。我必须存储帐户数据的文本文件使用一种简单的格式,如下所示:

Username
PIN
Balance
--
Username
PIN
Balance
--

等等等等

我想做的就是更改余额值。目前,我看到的唯一方法是将每行添加到列表中,更改余额值,然后将所有行一一重写为文本文件。

有更简单的方法吗?如果可以,怎么办?

1 个答案:

答案 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.