获取文件的最后访问时间?

时间:2013-01-18 06:45:49

标签: python file inode

我想在上次访问文件时得到,我尝试了以下代码:

import os, time

os.system("python test.py")
print os.stat('test.py').st_atime

time.sleep(60)

os.system("python test.py")
print os.stat('test.py').st_atime

但每次输出如下:

1358489344.72
1358489344.72

我期待延迟前和延迟后输出的差异。 也输出相同我每次都运行代码。

什么可能是错的?

2 个答案:

答案 0 :(得分:7)

字段st_atime由文件访问更改,例如,execve(2),mknod(2),pipe(2),utime(2)和read(2)(大于零字节)。其他例程,如mmap(2),可能会也可能不会更新st_atime。

当你运行“python test.py”时,它不会调用read(2),而是调用mmap(2)。这就是访问时间没有改变的原因。

这是“strace python test.py”的输出

open("test.py", O_RDONLY)               = 3
fstat(3, {st_mode=S_IFREG|0644, st_size=36, ...}) = 0
mmap(NULL, 65536, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x2ad626cdd000

答案 1 :(得分:1)

可能文件系统是使用noatime选项

挂载的
noatime
     Do not update inode access times on this filesystem 
     (e.g, for faster access on the news spool to speed up news servers).

检查您的/etc/fstab

有关访问时间的更多信息https://superuser.com/questions/464290/why-is-cat-not-changing-the-access-time