我正在尋找一種解決方案來獲取最終讀取文件的時間。該文件將不會被修改或創建,只是在閱讀模式下打開。這隻適用於寫入文件。如果我以讀模式打開文件,時間不正確:Python獲取文件的最後閱讀時間
f = open('my_path/test.txt', 'r')
f.close()
print time.ctime(os.stat('my_path/test.txt').st_mtime)
任何提示?
我正在尋找一種解決方案來獲取最終讀取文件的時間。該文件將不會被修改或創建,只是在閱讀模式下打開。這隻適用於寫入文件。如果我以讀模式打開文件,時間不正確:Python獲取文件的最後閱讀時間
f = open('my_path/test.txt', 'r')
f.close()
print time.ctime(os.stat('my_path/test.txt').st_mtime)
任何提示?
您正在查看stat
結構中的錯誤條目。你想使用.st_atime
值,而不是:
print time.ctime(os.stat('my_path/test.txt').st_atime)
st_atime
- 的最近訪問時間,
請注意,並非所有的系統更新atime
時間戳,請參閱Criticism of atime。截至2.6.30,Linux內核默認使用relatime
設置,其中atime
值僅在超過24小時之後纔會更新。您可以通過在fstab
中設置strictatime
選項來更改此選項。
Windows Vista也禁用更新到atime
,但您可以re-enable them。
只有當我在資源管理器中打開文件但不在Python代碼中時,這纔有效...... – snowflake 2013-05-09 14:47:58
在這種情況下,操作系統只會在某些情況下更新訪問時間,而Python不會觸發。如果「atime」值沒有更新,則沒有其他指標顯示您上次訪問文件的時間。這是什麼平臺,Windows? – 2013-05-09 14:51:30
不,Linux(Ubuntu 12.04)但程序必須運行跨平臺。到目前爲止,我通過將文件名保存到一個新文件中解決了這個問題,但是我發現它不太好。也許這是唯一的方法... – snowflake 2013-05-09 14:57:19
我試過這個,如果我在Python代碼中以讀模式打開文件,它就不起作用。 – snowflake 2013-05-09 14:48:53