首页 > 解决方案 > 如何重写文本文件中的一行?蟒蛇 3.7

问题描述

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

Username
PIN
Balance
--
Username
PIN
Balance
--

等等等等。

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

有没有更简单的方法来做到这一点?如果是这样,怎么做?

标签: pythonpython-3.xpython-3.7

解决方案


这显然是一个非常简单的文件结构,因此它有它的局限性。在您拥有超过数万行之前,您可能不会注意到任何性能问题。正如评论中所说,在那之后你将需要一个更好的工具。

如果您继续使用此方法,您实际上不需要加载所有内容,并在更新值后将其保存回磁盘。

您可以同时流式读取文件并写回临时文件。一旦遇到需要更新的组,当然需要更新 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.

推荐阅读