【问题标题】:How to overwrite first line everytime the .write() method is called?每次调用 .write() 方法时如何覆盖第一行?
【发布时间】:2016-12-12 02:45:52
【问题描述】:

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

【问题讨论】:

  • 第一次尝试,以后遇到问题。
  • 展示你的尝试。

标签: python io


【解决方案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

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

【讨论】:

  • 我是通过在最后的每个循环转弯时调用 open 来做到的,我仍然不知道这是否是最有效的方法,因为人们更喜欢投反对票而不是回答,但感谢无论如何,答案。
猜你喜欢
  • 1970-01-01
  • 2015-01-24
  • 1970-01-01
  • 2015-01-12
  • 2012-05-01
  • 1970-01-01
  • 2014-05-22
  • 1970-01-01
  • 2019-02-01
相关资源
最近更新 更多