如何在其他线程读取文件时修改文件?

时间:2011-03-24 06:51:32

标签: python

我在单个文本文件中多路读取数据(读取和写入)。 我需要能够替换或删除此文件中的文本,而无需替换实际文件。

我不能简单地.read()成一个字符串,然后.write()一个具有相同名称的新文件,因为其他线程仍在使用该文件。我无法.write()进入另一个文件,因为线程需要{em>单个文件中的.read()

这可能吗?

是否有等同于file.replace()file.remove()file.delete()的内容?

2 个答案:

答案 0 :(得分:2)

糟糕的主意。使用另一个独立负责写入/读入文件的线程。或者如果文件不是太大,请将文件读入内存。

答案 1 :(得分:1)

当然可以,但可能只有在您以统一的方式读取/写入文件时才有用。当我说制服时,你应该将文件视为数据块。比方说,每4096个字节就是一个块,你可以在每个块上做你需要的。如果你不这样做,那么你必须跟踪数据的偏移量,并使你的程序更难管理。

之后,您可以使用文件I / O的随机访问功能。像seek()这样的函数可以移动到文件中的不同偏移量,tell()可以告诉当前偏移量。然后,您可以从当前位置读取或写入。想想它就像你会记忆,因为它基本上就是它。

我不确定您对file.remove()file.replace()file.delete()函数的存在或者它对您正在做什么的帮助。它违背了目的。

另请阅读有关Readers-writers problem的更多信息,以了解如何同步此内容。