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. 用lua获取文件创建时间
- 3. 获取文件创建时间
- 4. 如何获取网上文件的创建日期(使用Python)?
- 5. Python:如何获取文件夹的创建日期和时间?
- 6. 在Linux中使用C创建文件
- 7. 如何在Python中获得精确的文件创建时间?
- 8. 上市文件取决于文件的创建时间
- 9. 在python中创建多个文件时获取错误
- 10. 在Unix中获取最新的文件创建时间
- 11. 在Excel中获取文件夹的创建时间
- 12. 如何获取上次在Python中修改文件的时间?
- 13. 在Linux中创建临时文件夹
- 14. 在Linux中使用Python创建GUI
- 15. 用Python在Linux上高效地读取csv文件在Python中
- 16. 在不同文件夹上使用python创建文件
- 17. 使用Python中的时间戳创建文件夹
- 18. 如何在Linux中获取文件创建日期?
- 19. 使用Python API在Azure上创建虚拟机时间
- 20. 如何使用Python获取FTP文件的修改时间ftplib
- 21. 在Python中创建文件时读取文件
- 22. Python:在读取文件时创建各种文件对象
- 23. 如何在Linux上使用sed从文件名获取值?
- 24. 无法获取文件名取决于文件的创建时间
- 25. 在创建文件时自动在服务器之间传输Linux文件
- 26. 创建Zip文件在Windows和提取Zip文件在Linux中
- 27. 获取文件创建或修改时间?
- 28. 在Linux上以超级用户的身份在Linux上创建txt文件
- 29. 使用python创建python文件
- 30. 使用Python创建/使用文件3.6
这为我工作: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