首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >时间,时间,和时间-如何解释它们?

时间,时间,和时间-如何解释它们?
EN

Stack Overflow用户
提问于 2014-12-18 14:48:02
回答 5查看 13.1K关注 0票数 11

我正在用Python编写一个程序,它需要比较几个目录的atime、mtime和ctime。为此目的,我使用os.stat("my_directory/")。我得到的结果是一个字符串,其中包括这些时间。对于示例目录,我有:

代码语言:javascript
复制
st_atime=1418911410L
st_mtime=1418911410L
st_ctime=1404656050L

我的问题是我对这些数字有些混淆。我想知道这些数字是否可以转换成实际时间?或者,如果一个数字(比如说ctime)比另一个(如atime)小,它是否意味着ctime比atime早还是晚?我已经搜索了很多网站来了解这一点,但我的尝试没有成功。有人能帮我吗?提前谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2014-12-18 14:55:39

通过使用状态模块来解释stat()结果,并将时代转换为日期时间,您可以从中获得有用的信息:

代码语言:javascript
复制
import os
import datetime

print datetime.datetime.fromtimestamp(os.stat(".").st_atime)

这将打印一个datetime对象,显示上次访问当前目录的时间:

代码语言:javascript
复制
datetime.datetime(2014, 12, 17, 7, 19, 14, 947384)
票数 2
EN

Stack Overflow用户

发布于 2014-12-18 14:53:20

ctime -上一次更改文件的inode (例如权限更改、文件重命名等)

时间-上次文件的内容被更改时

最后一次文件被访问。

这些数字只是unix时间戳--有符号的32位ints表示自1970年1月1日以来的秒数,也就是时代。

是的,较小的数字=更早的时间。

票数 11
EN

Stack Overflow用户

发布于 2014-12-18 14:56:02

引用功能文档

Notest_atimest_mtimest_ctime属性的确切含义和分辨率取决于操作系统和文件系统。例如,在使用FAT或FAT32文件系统的Windows系统上,st_mtime具有2秒的分辨率,而st_atime只有1天的分辨率。有关详细信息,请参阅操作系统文档。

对于Linux,系统文档是命令页

代码语言:javascript
复制
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对象:

代码语言:javascript
复制
>>> import datetime
>>> datetime.datetime.fromtimestamp(1418911410L)
datetime.datetime(2014, 12, 18, 14, 3, 30)

正如您在上面看到的,这三个字段分别表示访问时间、修改时间和状态更改时间。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27549217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档