每次调用.write()方法时如何覆盖第一行?

时间:2016-12-12 02:45:53

标签: python io

我想在外部文件中保存循环计数器,以便能够在结束时恢复循环,以防它崩溃或在结束前停止。因此,对于每个循环,我想用计数器覆盖第一行。现在我知道我可以通过每次调用open(file, 'w')来做到这一点,但我想知道它是否会引起一些问题。

1 个答案:

答案 0 :(得分:1)

这是一个强力解决方案,如果你处理大量的迭代器,这可能是低效的:

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

如果您的代码在写入最后一行之前崩溃(因此您有错误的数据),或者如果您在写入时每次再次打开文件时,保留文件中的最后一行可能会有问题,它必须执行大量操作操作并且可能很慢。