os.stat返回st_mtime和st_ctime屬性,修改時間爲POSIX上的st_mtime和st_ctime「更改時間」。 是否有任何函數返回使用Python和Linux下的文件的創建時間?在Linux上使用Python獲取文件創建時間
回答
3.1)我如何找到一個文件的創建時間?
你不能 - 它不存儲在任何地方。文件具有最後修改的 時間(由「ls -l」示出),最後訪問時間(由「ls -lu」示出)以及inode更改時間(由「ls -lc」示出)。後者通常是 被稱爲「創建時間」 - 即使在某些手冊頁中 - 但這是錯誤的;它也由諸如mv,ln, chmod,chown和chgrp等操作設置。
「stat(2)」的手冊頁討論了這一點。
那麼有沒有一個命令來查找在Linux中創建文件的時間和日期如果stat不是? – 2009-09-10 23:55:20
通常,UNIX文件系統根本不存儲創建時間 - 沒有辦法檢索從未寫入磁盤的數據。 – ephemient 2009-09-11 02:16:32
嘗試:
st_birthtime
它不是」保證是適用於所有系統雖然。從文檔:
在一些Unix系統(如Linux), 以下屬性也可能是 可供選擇:的st_blocks(編號分配給文件塊 的),st_blksize (文件系統塊大小),st_rdev(如果是inode設備,則輸入設備的 )。 st_flags(用戶爲 文件定義的標誌)。
在其他Unix系統(如 FreeBSD的),以下屬性可以 是可用的(但也可以僅填充 出如果根嘗試使用它們):st_gen (文件生成號),st_birthtime (時間的文件創建)。
您或許可以解釋爲什麼要這麼做。
間接的解決方案可能是使用一些revision control系統(又名版本控制系統= VCS)來管理需要出生時間的文件。
因此,您可以在這些文件上使用git(即將它們作爲「源代碼」處理)。那麼你不僅知道它們何時被創建(實際上在VCS中使用git add
註冊),而是爲什麼,由誰,爲什麼等...使用git log
獲取所有這些......
當然,你不知何故需要教育用戶使用VCS像git
根據線程hereOS X的HFS和微軟的NTFS還兼具跟蹤的誕生時間,而且我告訴OS X和統計的Cygwin的版本()返回此信息。其看osx stat manpage似乎是正確的至少爲Mac:
一個,M,C,B
的時間文件的最後訪問或修改時,索引節點最後更改的,或inode的出生時間爲 。
對於像EXT4,增加了Btrfs和JFS Linux的新文件系統都支持這一點使用debugfs,有來自here採取一個bash的功能,將提取的日期創建的時間戳:
您可以恢復該文件創建日期,如果你處理能力的文件系統EXT4一樣 - 日誌文件系統爲Linux:
改進時間戳
...的ext4提供了測量的時間戳納秒。另外,ext4還增加了對日期創建時間戳的支持。 但是在社區中沒有共識,因此
...正如Theodore Ts'o所指出的那樣,雖然在inode中添加額外的創建日期字段是很容易的(因此技術上支持日期創建ext4中的時間戳),修改或添加必要的系統調用(如stat()(可能需要新版本)以及依賴它們的各種庫(如glibc)更加困難。這些變化需要協調許多項目。因此,即使ext4開發人員實現對創建日期時間戳的初始支持,此功能目前也不會提供給用戶程序。 以Linus最終報價結束
讓我們等待五年,看看是否真的需要和使用共識,而不是因爲「我們可以」而匆忙進入某種東西。
xstat() {
for target in "${@}"; do
inode=$(ls -di "${target}" | cut -d ' ' -f 1)
fs=$(df "${target}" | tail -1 | awk '{print $1}')
crtime=$(sudo debugfs -R 'stat <'"${inode}"'>' "${fs}" 2>/dev/null |
grep -oP 'crtime.*--\s*\K.*')
printf "%s\t%s\n" "${crtime}" "${target}"
done
}
運行它返回的創建日期:
:~$ echo 'print("hello world")' > blah.py
:~$ xstat "blah.py"
Mon Jul 6 13:43:39 2015 blah.py
:~$ echo 'print("goodbye world")' > blah.py
:~$ xstat "blah.py"
Mon Jul 6 13:43:39 2015 blah.py
所以,除非文件系統支持的話那麼它是不可能的,如果該文件系統,那麼你可以使用子進程運行debugfs
和解析輸出。
某些文件系統支持記錄出生時間,但Linux不提供獲取它的界面。
參見http://lwn.net/Articles/397442/
如果一個atempts使用 「STAT」 命令以得到它: %STAT -c%重量{文件或目錄}
其結果將是一個 「 - 」 由於它沒有能力檢索它。然而,可以使用利用與debugfs此xstat樣品的方法來檢索它(再次提供,正在使用的文件系統支持收集它。)
https://gist.github.com/moiseevigor/8c496f632137605b322e
xstat() {
for target in "${@}"; do
inode=$(ls -di "${target}" | cut -d ' ' -f 1)
fs=$(df "${target}" | tail -1 | awk '{print $1}')
crtime=$(sudo debugfs -R 'stat <'"${inode}"'>' "${fs}" 2>/dev/null |
grep -oP 'crtime.*--\s*\K.*')
printf "%s\t%s\n" "${crtime}" "${target}"
done
}
注意這需要須藤。
你是什麼意思,它不能做[1]?功能
os.stat(path).st_birthtime,效果很好。
[1]: Somebody said that it couldn’t be done But he with a chuckle replied That 「maybe it couldn’t,」 but he would be one Who wouldn’t say so till he’d tried. So he buckled right in with the trace of a grin On his face. If he worried he hid it. He started to sing as he tackled the thing That couldn’t be done, and he did it! -- Edgar Albert Guest
那是什麼?你的答案很混亂。 – Billa 2018-02-25 03:32:01
- 1. 在Mac上使用Python獲取文件創建時間
- 2. 如何在Linux中獲取'文件創建時間'
- 3. 用lua獲取文件創建時間
- 4. 獲取文件創建時間
- 5. 如何在java中獲取上傳文件的創建時間?
- 6. python從mysql獲取用戶並在linux上創建它們
- 7. Linux獲取上下文切換時間
- 8. 如何獲取網上文件的創建日期(使用Python)?
- 9. Python:如何獲取文件夾的創建日期和時間?
- 10. 使用post_id獲取創建時間
- 11. 在Linux中使用C創建文件
- 12. 如何在Python中獲得精確的文件創建時間?
- 13. 在python中創建多個文件時獲取錯誤
- 14. 上市文件取決於文件的創建時間
- 15. 無法在Linux上創建777文件
- 16. 在Excel中獲取文件夾的創建時間
- 17. 在Unix中獲取最新的文件創建時間
- 18. 在Android中使用現有的「.so」文件(在Linux上創建)
- 19. 如何獲取上次在Python中修改文件的時間?
- 20. 在Linux中創建臨時文件夾
- 21. 在linux下使用python訪問文件的時間
- 22. 在Linux中使用Python創建GUI
- 23. 用Python在Linux上高效地讀取csv文件在Python中
- 24. 在不同文件夾上使用python創建文件
- 25. 使用Python中的時間戳創建文件夾
- 26. 在linux中創建文件
- 27. 在linux中創建文件
- 28. 如何在Linux中獲取文件創建日期?
- 29. 使用Python API在Azure上創建虛擬機時間
- 30. 如何使用Python獲取FTP文件的修改時間ftplib
這爲我工作:http://stackoverflow.com/a/947239/4535020 – Tbb 2015-07-01 14:29:14
看起來這取決於你用什麼文件系統:http://unix.stackexchange.com/questions/7562/what -file-systems-on-linux-store-the-creation-time – CSJ 2015-07-03 06:41:17