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

如何将更改的项目保存到外部文件?(Python 3),python,save,external,Python,Save,External,我对python相当陌生,但我正在编写一个脚本,希望其中一个函数从另一个文件更新变量。它可以工作,但是当我退出脚本并重新加载它时,更改就不再存在了。例如(这不是我的脚本): 若我在该会话期间检索到数字,它将返回1,但若我退出并再次返回,并在不调用changeNumber的情况下检索数字,它将返回0 如何让脚本将changeNumber中编辑的数字实际保存到changeFile.txt?正如我所说的,我对python相当陌生,但我在互联网上到处都找过,找不到有效的答案 编辑:对不起,我忘了在实际脚

我对python相当陌生,但我正在编写一个脚本,希望其中一个函数从另一个文件更新变量。它可以工作,但是当我退出脚本并重新加载它时,更改就不再存在了。例如(这不是我的脚本):

若我在该会话期间检索到数字,它将返回1,但若我退出并再次返回,并在不调用changeNumber的情况下检索数字,它将返回0

如何让脚本将changeNumber中编辑的数字实际保存到changeFile.txt?正如我所说的,我对python相当陌生,但我在互联网上到处都找过,找不到有效的答案

编辑:对不起,我忘了在实际脚本中包含这个值,还有其他值


因此,我想更改数字并保存它,而不删除该文件中存储的其他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
,并将上述代码段的最后两行(以
开头,以
开头)更改为:

这就是Python2解决方案(OP没有告诉我们是否使用Py2或Py3,这是一个非常重要的信息——嘿,谁在乎让它变得容易,而不是非常难,让愿意帮助你的志愿者,对吧?!-)。如果是Python 3,则将最后一条语句从打印行
更改为

    print(line, end='')

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

您到底尝试了什么?谷歌搜索“python保存文件”给我带来了成千上万的点击率…我没有找到任何打开的函数。制作一个txt文件,并像使用数据库一样使用它。使用变量写入文件,然后从另一个脚本读取该文件。马特:我在行动中说过,他们没有一个真正有答案。拉杰:这只是一个非常基本的例子。我把open()作为解决方案,但我找不到任何真正有效的方法。howaboutNO:请参阅回复Alex。我文件的一部分检查值,如果值为0,则执行一项操作,如果值为1,则执行另一项操作。为了让它正确运行,我必须在changeFile中包含数字。这难道不会为number创建第二个值吗?另外,我在听到flush()从缓冲区更新了文件时,查看了它,但它所做的只是完全擦除文件。(因此名称显然是lol)文件中只有10行左右,所以这只是一个小小的不便。@TomT,我显示的代码从头重写了
changeFile.txt
,这就是为什么我清楚地指出,只有在“
changeFile.txt
没有任何其他内容”的情况下,它才能工作如果它确实要保留其他内容,请编辑您的Q以明确指定该内容,我将向您展示如何使用标准库的
fileinput
模块来解决该问题!)再一次,很抱歉,我现在正在打电话,但我会将我的Python版本添加到OP中。我明天将尝试此功能,谢谢!:)@TomT,我给了你Py2和Py3的解决方案,还有什么问题?!
for line in fileinput.input(['changefile.txt'], inplace=True):
    if line.startswith('number ');
        line = 'number = {}\n'.format(number)'
    print line,
    print(line, end='')