2013-07-16 192 views
8

我有這種情況,我想保留一個文件的原始屬性(文件創建日期等)。通常,當您在Windows中複製文件時,您製作的副本會獲得新的「修改」日期等。我已經穿過shutil.copy命令 - 儘管這不會保持文件屬性相同。保留副本上的文件屬性

我找到了following question on Stack Unix,但我想知道是否有方法讓我在Python中執行此操作。

回答

16

如果你看一下shutil的文檔,你會立即發現copy2功能,那就是:

等同於copy()除了copy2()也試圖保存所有文件的元數據。

在最新版本的Python,有功能的整體轉換做到位並在此separately- copycopymodecopystat片 - 但是,如果你只是想複製的一切,copy2做一切可能的。

正如文檔頂部的警告所說,「一切皆有可能」並不代表任何事情,但它確實包括日期和其他屬性。特別是:

在Windows上,不會複製文件所有者,ACL和備用數據流。

如果你真的需要包括那些東西,你將需要訪問Win32 API(這是最容易通過pywin32)。但是你沒有。

+0

輝煌 - 古老的文物! :D –

+0

如果您仔細閱讀文檔,您會注意到'copy2'旨在等同於'cp -p'(這是您想要的),但它實際上無法在Windows上模擬它(因爲文件所有權問題),所以相反他們說它複製「可能的一切」並記錄這意味着什麼。無論如何,對於你的用例來說,沒關係,但未來的讀者可能會誤導,所以我編輯了答案。 – abarnert

+0

這可能是相關的。我正在研究取證工具(這將允許我將文件從一個目錄複製到另一個目錄)。 –