我有一個Python腳本,用於檢查拾取目錄並處理它找到的任何文件,然後刪除它們。拾取目錄:如何拾取仍在寫入的文件?
如何確保不會拾取正在將該文件放入該目錄的進程正在寫入的文件?
我的測試案例非常簡單。我將300MB文件複製粘貼到拾取目錄中,並且腳本通常會抓取仍在寫入的文件。它僅對部分文件進行操作,然後將其刪除。這會引起操作系統中的文件操作錯誤,因爲它正在寫入的文件消失。
我試圖在打開/處理/刪除它之前獲取文件上的鎖(使用FileLock模塊)。但是這並沒有幫助。
我已經考慮檢查文件的修改時間,以避免X秒內的任何事情。但那似乎很笨重。
我的測試是在OSX上,但我試圖找到一個解決方案,將跨主要平臺的工作。
我在這裏看到一個類似的問題(How to check if a file is still being written?),但沒有明確的解決方案。
謝謝
正在編寫該文件的應用程序應該真的是自動完成的,但我意識到您可能無法控制這個。 –
我認爲要可靠地做到這一點,要麼文件需要原子化寫入,要麼需要通過操作系統直接或間接與寫入進程進行通信。有特定於操作系統的解決方案,如文件鎖定和修改事件,但AFAIK沒有任何跨平臺的。檢查修改時間可能與您將獲得跨平臺解決方案一樣好。 –