Search code examples
pythonfileinode

Get last access time of the file?


I want to get when the file accessed last time, I tried following code:

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

But each time the output is same as follows :

1358489344.72
1358489344.72

I was expecting a difference in output before delay and after delay. also output is same wen I run the code every time.

what could be wrong?


Solution

  • The field st_atime is changed by file accesses, for example, by execve(2), mknod(2), pipe(2), utime(2) and read(2) (of more than zero bytes). Other routines, like mmap(2), may or may not update st_atime.

    While you run "python test.py", it won't call read(2), instead it would call mmap(2). That's why the access time didn't be udpated.

    Here is output of "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