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

Nik*_*war 7 python inode file

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

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
Run Code Online (Sandbox Code Playgroud)

但每次输出相同如下:

1358489344.72
1358489344.72
Run Code Online (Sandbox Code Playgroud)

我预计在延迟之前和延迟之后输出会有所不同.也输出相同我每次都运行代码.

什么可能是错的?

fwu*_*fwu 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
Run Code Online (Sandbox Code Playgroud)