如何将更改的项目保存到外部文件? (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='')
获得完全相同的预期效果。
我是 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='')
获得完全相同的预期效果。