是否在同一个文件上同时打开多个文件句柄是python中可接受的做法?

时间:2014-05-29 21:52:07

标签: python io

例如:

bedpath = "/tmp/bedtest"
with open(bedpath, "rb") as fh1, open(bedpath, "rb") as fh2:
    fh1.seek(3)
    fh2.seek(5)
    for i in range(3):
        b1 = fh1.read(1)
        b2 = fh2.read(1)
        # do something with b1 and b2

如果没有,为什么?

2 个答案:

答案 0 :(得分:0)

是的,我这样做是为了在多个线程中读取相同的文件,它工作正常。但是,如果你想提高速度,那么无论如何你很可能会受到限制。

答案 1 :(得分:0)

对于阅读文件,这是可以接受的,特别是,如果您需要多个搜索位置。

对于修改文件 - 最好不要尝试(对MartijnPieters做出反应的评论)。

  • 初学者(不代表你)经常尝试同时读取和修改文件,而不是理解,文本行不是如何将文件存储在磁盘上。这就是我所说的简单失败。
  • 您可以尝试在读取文件时修改文件或从多个文件描述符修改文件。但这很复杂,大部分都可以通过某些东西来避免,只需几个数量级就能理解和维护。