我正在查找一些代碼到檢查文件系統中的文件是否可用(未被另一進程使用)。我怎麼能在Python中做到這一點?謝謝!在Python中檢查文件是否可用(未被另一個進程使用)
我將如何使用它:一次性檢查文件是否可用以及何時可用(進程不再需要它)將其刪除。
我正在查找一些代碼到檢查文件系統中的文件是否可用(未被另一進程使用)。我怎麼能在Python中做到這一點?謝謝!在Python中檢查文件是否可用(未被另一個進程使用)
我將如何使用它:一次性檢查文件是否可用以及何時可用(進程不再需要它)將其刪除。
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。一個糟糕的解決方案,以解決問題。當然這假定文件*是*鎖定/不可刪除的。如果刪除該文件意味着「該過程是通過該文件完成的」,那麼,哎呀!我不會相信比我跳得更遠。 – 2010-12-21 10:40:39
如果該文件的其他進程打開了該文件,並刪除它,它不會從文件系統中,直到所有的進程關閉其句柄它刪除。
如果其他進程僅僅需要其文件句柄/對象繼續工作,則可以安全地刪除該文件,並在進程關閉句柄時將其刪除。如果您希望能夠在文件上調用open(),則兩個進程都需要使用鎖(請參閱fcntl.flock())。
進程A和進程B是否要使用該文件,並在進程中進行鎖定,並且進程C將輪詢以查看是否可以刪除該文件以瞭解A和B都已完成?這是乞求成爲一個競爭條件 - 說過程A完成,釋放文件,然後C獲取時間片,刪除文件,然後B得到時間片,並去使用該文件和繁榮。 – mtrw 2010-12-21 11:04:59
@mtrw這很好。但是在我的情況下並不複雜:只有一個進程使用該文件並且只有一次。 – bluish 2010-12-21 13:04:47