在Linux中,如何在讀取文件之前知道文件是否已完成複製?在Windows中,引發了一個OSError。文件複製完成?
Q
文件複製完成?
0
A
回答
1
可以使用inotify的機制(通過pyinotify)趕上像創建活動,寫,關閉,並根據他們,你可以假設羯羊拷貝已經完成與否。
但是,由於您沒有提供有關您要做什麼的詳細信息,因此我無法判斷inotify是否適合您(btw,inotify是Linux特有的,因此您無法在Windows或其他平臺上使用它)
1
在Linux中,您可以在另一個進程正在寫入文件時打開文件,而不需要Python拋出OSError
,因此通常無法確定對方是否已完成寫入該文件。您可以嘗試一些黑客,但:
您可以定期檢查文件大小,看它是否增加了自上次檢查。如果它沒有增加例如五秒鐘,那麼可能是可以安全地假定副本已經完成。我想說可能是,因爲在任何情況下都不是這樣。如果寫入文件的其他進程因任何原因被阻塞,則可能會暫時停止寫入文件並稍後恢復。因此,這不是100%的傻瓜,但如果系統永遠不會承受沉重的寫入過程,那麼它可能適用於本地文件副本。
您可以檢查
fuser
(這是一個shell命令)的輸出,該輸出將列出持有給定文件名的文件句柄的所有文件的進程ID。如果此列表包含除您以外的任何進程,則可以假定複製過程尚未完成。但是,您必須確保在目標系統上安裝了fuser
以使其正常工作。
+0
我正在使用輪詢方法。我想知道是否有更好的方法...... – asdfg 2010-06-07 12:43:34
相關問題
- 1. 複製完成的文件?
- 2. 檢查文件是否完成複製
- 3. 獲取文件或文件夾複製完成狀態
- 4. 等待複製()完成
- 5. 複製完成Webbrowser元素?
- 6. 爲複製文件生成文件名
- 7. 獲取RoboCopy只複製完成的文件
- 8. grep qstat輸出和複製文件一旦完成
- 9. 檢查文件是否已經完成複製目標C
- 10. 安裝完成後使用inno setup複製文件
- 11. 如何知道一個文件是完成複製
- 12. 在shell腳本中只複製完成的文件
- 13. 讀取尚未完成複製/上傳的文件內容
- 14. 如何確定文件夾是否已完成複製c#
- 15. Powershell:文件完成複製後執行腳本
- 16. 等待文件完成複製後再對其執行操作?
- 17. 完成後通知腳本文件複製
- 18. 在創建時複製文件(完成後)
- 19. 不完整的文件複製Java NIO
- 20. 文件未被完全複製
- 21. 只有在複製完所有目錄後才複製文件
- 22. 複製谷歌的自動完成與jQuery自動完成
- 23. 複製文件VS不復制文件?
- 24. CouchbaseLite等待pull複製完成
- 25. scp:如何發現複製已完成
- 26. 構建完成後MSBuild從IntermediateOutputPath複製
- 27. Swift - 複製完成處理程序
- 28. 複製完成後xcopy是否暫停?
- 29. 複製完成後的運行過程
- 30. DataGridView:複製完成到剪貼板
請注意,pyinotify的主頁現在是http://trac.dbzteam.org/pyinotify而不是SourceForge頁面。無論如何,偉大的回答,我不知道這個模塊! – 2010-06-07 12:41:14
它的工作......謝謝。 – asdfg 2010-06-07 12:55:42