如何将更改的项目保存到外部文件? (Python 3)

How to save a changed item to an external file? (Python 3)

我是 python 的新手,但我正在制作一个脚本,我希望其中一个函数可以更新来自另一个文件的变量。它有效,但是当我退出脚本并重新加载它时,更改不再存在。例如(这不是我的脚本):

#File: changeFile.txt
number = 0

#File: changerFile.py
def changeNumber():
    number += 1

如果我在该会话期间检索 number,它将 return 1,但如果我退出并再次返回并检索 number 不调用 changeNumber,它 returns 0.

如何让脚本将在 changeNumber 中编辑的数字实际保存到 changeFile.txt?正如我所说,我是 python 的新手,但我几乎在 Internet 上到处查看,但找不到真正有效的答案。

编辑:抱歉,我忘了在实际脚本中包含它,还有其他值。

所以我想更改数字并保存它而不删除存储在该文件中的其他 10 个值。

假设,如您所示,changeFile.txt 没有任何其他内容,那么只需将函数更改为:

def changeNumber():
    global number  # will not possibly work w/o this, the way you posted!
    number += 1
    with open('changeFile.txt', 'w') as f:
        f.write('number = {}\n'.format(number))

添加:OP 编辑​​了 Q 以提及(最初省略!-)changefile.txt 有其他需要保留的行以及需要更改的行。

当然,这会改变一切 -- 但是,Python 可以应对!-)

只需在本模块的开头添加 import fileinput,并将上述代码段(以 with 开头)的最后两行更改为:

for line in fileinput.input(['changefile.txt'], inplace=True):
    if line.startswith('number ');
        line = 'number = {}\n'.format(number)'
    print line,

这是 Python 2 解决方案(OP 没有费心告诉我们是使用 Py2 还是 Py3,这是一个关键信息——嘿,谁在乎它呢 对于愿意帮助你的志愿者来说,简单而不是非常困难,对吧?!-)。如果Python3,将最后一条语句由print line,改为

    print(line, end='')

获得完全相同的预期效果。