【问题标题】:Python get last reading time of a file [duplicate]Python获取文件的最后读取时间[重复]
【发布时间】:2013-05-09 14:30:07
【问题描述】:

我正在寻找一种解决方案来获取最后读取文件的时间。该文件不会被修改或创建,只是在阅读模式下打开。这有效,但仅适用于写入文件。如果我以读取模式打开文件,时间不正确:

f = open('my_path/test.txt', 'r')
f.close()

print time.ctime(os.stat('my_path/test.txt').st_mtime)

有什么提示吗?

【问题讨论】:

  • 我试过了,如果我在 Python 代码中以读取模式打开文件,它不起作用。

标签: python time file-access


【解决方案1】:

您正在查看stat 结构中的错误条目。您想改用 .st_atime 值:

print time.ctime(os.stat('my_path/test.txt').st_atime)

来自os.stat() documentation

  • st_atime - 最近访问的时间,

请注意,并非所有系统都会更新atime 时间戳,请参阅Criticism of atime。从 2.6.30 开始,Linux 内核默认使用 relatime 设置,其中 atime 值仅在超过 24 小时后更新。您可以通过在fstab 中设置strictatime 选项来更改此设置。

Windows Vista 也禁用了对atime 的更新,但您可以re-enable them

【讨论】:

  • 这仅适用于我在资源管理器中打开文件而不是在 Python 代码中...
  • 在这种情况下,操作系统只会在 Python 不会触发的某些情况下更新访问时间。如果atime 值未更新,则没有其他指标可显示您上次访问文件的时间。这是什么平台,Windows?
  • 不,Linux (Ubuntu 12.04) 但程序必须跨平台运行。到目前为止,我通过将文件名保存到一个新文件中解决了这个问题,但我发现它不太好。也许这是唯一的方法......
  • @snowflake:参见Wikipedia,您正在运行启用了relatime 的Linux 系统。在这种情况下,atime 仅每 24 小时更新一次。
  • 嗯,谢谢 Martijn。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-07
  • 2010-09-27
  • 1970-01-01
  • 2013-01-01
  • 1970-01-01
  • 2012-09-11
  • 2011-08-22
相关资源
最近更新 更多