簡體   English   中英

如何在復制之前確保文件已完成?

[英]How to make sure a file is completed before copying it?

應用程序A(超出我的控制范圍)將文件寫入目錄。 寫入文件后,我想用我的python腳本將其備份到其他地方。

問題:如何確定文件已完成,或者應用程序A仍在寫入文件,以便我應等待文件完成? 我擔心我會復制部分文件...。

我想使用此函數shutil.copyfile(src,dst)但我不知道它是否安全,還是應該檢查文件以其他方式進行復制。

一般來說, 您不能

因為您沒有解決問題所需的信息。

如果您必須知道文件已成功完全傳輸/創建/寫入/成功,則創建者必須以某種方式向您發送信號,因為只有創建者才具有該信息。 從接收方來看,通常無法推斷出文件已完全傳輸。 您可以嘗試猜測 ,僅此而已。 例如,您通常不能告訴您從丟失連接的位置進行的完整傳輸。

因此,您需要來自發送者的某種信號。

一種常見的方法是使用重命名操作,例如從filename.xfrfilename ,或者從“工作中”目錄到您正在觀看的目錄。 由於大多數操作系統都是原子地執行此類重命名操作,因此,如果發件人僅在成功完成傳輸后才進行重命名,那么您將僅處理已成功傳輸的完整文件。

另一種常見的信號是發送一個“完成”標志的文件,如發送filename.done一旦filename已成功發送。

由於您不控制發件人,因此無法通過監視文件來可靠地解決此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM