检查Python中是否有可用的文件(其他进程未使用)

时间:2010-12-21 10:32:39

标签: python file

我正在寻找一些代码来检查文件系统中的文件是否可用(未被其他进程使用)。我怎么能在Python中做到这一点?谢谢!

我将如何使用它:圆柱形检查文件是否可用以及何时可用(进程不再需要它)删除它。

3 个答案:

答案 0 :(得分:2)

while True:
    try:
        os.remove(yourfilename) # try to remove it directly
    except OSError as e:
        if e.errno == errno.ENOENT: # file doesn't exist
            break
        time.sleep(5)
    else:
        break

答案 1 :(得分:0)

如果文件其他进程打开并删除它,则在所有进程关闭其句柄之前,它不会从文件系统中删除。

如果其他进程只需要其文件句柄/对象继续工作,您可以安全地删除该文件,当进程关闭其句柄时,它将被删除。如果您希望能够在文件上调用open()直到进程完成它,则两个进程都需要使用锁(请参阅fcntl.flock())。

答案 2 :(得分:0)

不确定您是否使用Linux。我认为你正在寻找的是在python中实现'fuser'之类的功能。

如果您使用的是Linux,则可以在'/ proc'文件系统下迭代进程ID,并检查这些进程引用的文件。 检查此脚本fuser.py。您可以使用相同的方法,并根据您的需要调整上面列出的代码。