我正在用Python编写一个程序,它需要比较几个目录的atime、mtime和ctime。为此目的,我使用os.stat("my_directory/")。我得到的结果是一个字符串,其中包括这些时间。对于示例目录,我有:
st_atime=1418911410L
st_mtime=1418911410L
st_ctime=1404656050L我的问题是我对这些数字有些混淆。我想知道这些数字是否可以转换成实际时间?或者,如果一个数字(比如说ctime)比另一个(如atime)小,它是否意味着ctime比atime早还是晚?我已经搜索了很多网站来了解这一点,但我的尝试没有成功。有人能帮我吗?提前谢谢。
发布于 2014-12-18 14:55:39
通过使用状态模块来解释stat()结果,并将时代转换为日期时间,您可以从中获得有用的信息:
import os
import datetime
print datetime.datetime.fromtimestamp(os.stat(".").st_atime)这将打印一个datetime对象,显示上次访问当前目录的时间:
datetime.datetime(2014, 12, 17, 7, 19, 14, 947384)发布于 2014-12-18 14:53:20
ctime -上一次更改文件的inode (例如权限更改、文件重命名等)
时间-上次文件的内容被更改时
最后一次文件被访问。
这些数字只是unix时间戳--有符号的32位ints表示自1970年1月1日以来的秒数,也就是时代。
是的,较小的数字=更早的时间。
发布于 2014-12-18 14:56:02
引用功能文档
Note:
st_atime、st_mtime和st_ctime属性的确切含义和分辨率取决于操作系统和文件系统。例如,在使用FAT或FAT32文件系统的Windows系统上,st_mtime具有2秒的分辨率,而st_atime只有1天的分辨率。有关详细信息,请参阅操作系统文档。
对于Linux,系统文档是命令页。
struct timespec st_atim; /* time of last access */
struct timespec st_mtim; /* time of last modification */
struct timespec st_ctim; /* time of last status change */timespec是在man time(2)中定义的
它的时间代表了自时代以来的秒和纳秒。
那个时代就是UNIX时代。值越高,自那个时代(即1970年1月1日,世界协调时间午夜)以来,时间就越长。
Python以同样的方式处理时间问题,而模块有类方法可以从这样的值中为您提供一个datetime对象:
>>> import datetime
>>> datetime.datetime.fromtimestamp(1418911410L)
datetime.datetime(2014, 12, 18, 14, 3, 30)正如您在上面看到的,这三个字段分别表示访问时间、修改时间和状态更改时间。
https://stackoverflow.com/questions/27549217
复制相似问题