2011-09-25 61 views
2

我在Windows(XP)和Linux上都試過utime()。在Windows上,我得到一個EACCES錯誤,在Linux上我沒有得到任何錯誤(但時間沒有改變)。我的utime()代碼很好,因爲它適用於文件。我找不到utime()應該在目錄上工作,但如果不是,我該如何更改時間和日期?更改目錄時間/日期

我正在尋找一個解決方案,它可以理想地適用於Windows和Linux,但如果不是,我總是可以使用一些操作系統特定的代碼。

utime似乎確實可以在Linux上工作,但它似乎不適用於我,因爲我在該目錄中移動文件,並且將時間戳記更新爲當前時間。

+0

可能相關:http://stackoverflow.com/questions/2363497/python-os-utime-doesnt-update-the-access-time –

+0

不幸的是沒有真正相關,我根本無法更新時間戳(last訪問或修改)。 – Radu

+0

是的,但也許是相同的註冊表鍵*和*另一個關閉? –

回答

2

對於Windows,您可以使用也適用於目錄的SetFileTime

+0

謝謝,我嘗試過,但Windows今天給我帶來了很多麻煩。我不得不使用CreateFile來獲取我可以用於SetFileTime的那個目錄的句柄。所以我這樣做:src_dir = CreateFile(源,GENERIC_READ,FILE_SHARE_READ,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);那麼,我得到一個「訪問被拒絕」錯誤:/ – Radu

+0

標誌CREATE_ALWAYS可能是問題。如果該目錄存在,則使用OPEN_ALWAYS。否則使用CreateDirectory創建一個目錄。此外,必須使用FILE_WRITE_ATTRIBUTES權限打開與SetFileTime一起使用的句柄。 GENERIC_READ並不意味着這種權利。 –

+0

謝謝,我將它改爲:src_dir = CreateFile(source,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);仍然是相同的訪問衝突:/我之所以使用GENERIC_READ是因爲我想使用補充函數GetFileTime()。我想要做的是複製目錄,我想將新創建的目錄的日期設置爲與原始日期相同的日期。 – Radu