2013-05-09 32 views
1

我正在尋找一種解決方案來獲取最終讀取文件的時間。該文件將不會被修改或創建,只是在閱讀模式下打開。這隻適用於寫入文件。如果我以讀模式打開文件,時間不正確:Python獲取文件的最後閱讀時間

f = open('my_path/test.txt', 'r') 
f.close() 

print time.ctime(os.stat('my_path/test.txt').st_mtime) 

任何提示?

+0

我試過這個,如果我在Python代碼中以讀模式打開文件,它就不起作用。 – snowflake 2013-05-09 14:48:53

回答

10

您正在查看stat結構中的錯誤條目。你想使用.st_atime值,而不是:

print time.ctime(os.stat('my_path/test.txt').st_atime) 

os.stat() documentation

  • st_atime - 的最近訪問時間,

請注意,並非所有的系統更新atime時間戳,請參閱Criticism of atime。截至2.6.30,Linux內核默認使用relatime設置,其中atime值僅在超過24小時之後纔會更新。您可以通過在fstab中設置strictatime選項來更改此選項。

Windows Vista也禁用更新到atime,但您可以re-enable them

+0

只有當我在資源管理器中打開文件但不在Python代碼中時,這纔有效...... – snowflake 2013-05-09 14:47:58

+0

在這種情況下,操作系統只會在某些情況下更新訪問時間,而Python不會觸發。如果「atime」值沒有更新,則沒有其他指標顯示您上次訪問文件的時間。這是什麼平臺,Windows? – 2013-05-09 14:51:30

+0

不,Linux(Ubuntu 12.04)但程序必須運行跨平臺。到目前爲止,我通過將文件名保存到一個新文件中解決了這個問題,但是我發現它不太好。也許這是唯一的方法... – snowflake 2013-05-09 14:57:19