【发布时间】:2016-12-12 02:45:52
【问题描述】:
我想在一个外部文件中保存一个循环计数器,以便能够在它结束的地方恢复循环,以防它崩溃或我在结束之前停止。因此,对于每个循环,我都想用计数器覆盖第一行。现在我知道我可以通过每次调用open(file, 'w') 来做到这一点,但我想知道这是否会导致一些问题。
【问题讨论】:
-
第一次尝试,以后遇到问题。
-
展示你的尝试。
我想在一个外部文件中保存一个循环计数器,以便能够在它结束的地方恢复循环,以防它崩溃或我在结束之前停止。因此,对于每个循环,我都想用计数器覆盖第一行。现在我知道我可以通过每次调用open(file, 'w') 来做到这一点,但我想知道这是否会导致一些问题。
【问题讨论】:
这是一个蛮力解决方案,如果您要处理大量迭代器,这可能是低效的:
def write_to_file():
for i in range(5):
with open("temp", "w") as f:
# change this to the command you want to store
f.write("This is iteration {}\n".format(i))
# checking the file contents, contains only last command
with open("temp", "r") as f:
print f.read()
另一种方法是读取该行并将其复制过来。从这里查看更多信息:change first line of a file in python
如果您的代码在写入最后一行之前崩溃(因此您有错误的数据),或者如果您每次在写入时再次打开文件,则将最后一行保留在文件中可能会出现问题,它必须做很多操作,并且可能很慢。
【讨论】:
open 来做到的,我仍然不知道这是否是最有效的方法,因为人们更喜欢投反对票而不是回答,但感谢无论如何,答案。