是否有可能在python中读取文件时损坏文件,而其他应用程序更新了文件?

时间:2015-12-01 15:56:38

标签: python file file-io readfile file-handling

我有一个python函数,可以通过以下方式读取文件:


def parse(filename, position):
    with open(filename,'r') as file:
        for index, line in enumerate(islice(file,position,None), 1):
            ... do something
            print line
    file.close()
    return index

每当另一个不受我控制的应用程序将一些数据写入文件时,就会调用此函数,这样我就会尽量避免同时读取和写入,因为我不希望文件是损坏即可。无论如何,不​​保证读取和写入不会同时发生。

我所知道的是:

  1. 如果发生同时读/写,读取功能可能无法读取最新信息like in this question,这对我来说没问题,因为目的是从文件中获取信息而不会破坏它。< / LI>
  2. 可以锁定文件进行读取,这样在我阅读时写入应用程序就不会写入。但我不需要这个,因为如上所述,读取旧数据没有问题。
  3. 我想知道的是:

    1. 这种阅读功能是否可以破坏文件?
    2. 如果不是,保证文件不会被破坏的原因是什么?
    3. 此读/写方案中是否存在任何其他可能的问题/不一致?

1 个答案:

答案 0 :(得分:0)

如果你看一下

with open(filename,**'r'**) as file:

在这里,您以只读格式打开文件,这意味着您无法编写文件,尝试自己编写文件,它会抛出异常,说只打开文件进行阅读。内部文件对象保存您打开的模式,无论何时调用操作,它都会检查您打开文件的模式,如果它不合法(打开读取和调用写入不合法),它&# 39;立即抛出异常。

另一件事是,你专门致电

file.close()

这是没用的,当你退出循环时它已经关闭了,而在with loop退出时它会调用file。退出()方法,这将最终关闭文件。