You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么Python os模块输出始终为纪元时间,stat属性取值不符合预期

问题根源
  • 你混淆了stat模块的常量定义和os.stat()返回的文件属性结果:stat.ST_SIZE、stat.ST_MTIME、stat.ST_ATIME本质是固定的整数索引,用来定位stat结果元组里的对应属性,本身不存储任何目标文件的属性值。
  • 你调用了os.stat("abc.txt")但没有将返回的结果对象保存,后续打印时直接使用了stat模块的固定常量,这些常量本身数值很小,转换为时间戳后自然就是接近1970年的纪元时间,和你目标文件的实际属性完全无关。
解决方法

先保存os.stat()的返回结果,再从结果中读取对应属性即可,有两种合法的取值写法:

  1. 直接读取结果对象的属性(更简洁,推荐)
  2. 配合stat模块的常量作为索引取值

修正后的可运行代码如下:

import os
import datetime
import stat

# 保存os.stat返回的文件属性对象
file_stat = os.stat("abc.txt")

# 写法1:直接读属性,获取文件实际属性值
print("File size in byte is:", file_stat.st_size)
print("File last modified is:", datetime.datetime.fromtimestamp(file_stat.st_mtime))
# 如果确实需要访问时间固定输出纪元时间,保留原始的stat.ST_ATIME写法即可
print("File last accessed is:", datetime.datetime.fromtimestamp(stat.ST_ATIME))

# 写法2:用stat常量做索引,和你的原始写法逻辑更接近
# print("File size in byte is:", file_stat[stat.ST_SIZE])
# print("File last modified is:", datetime.datetime.fromtimestamp(file_stat[stat.ST_MTIME]))
# print("File last accessed is:", datetime.datetime.fromtimestamp(stat.ST_ATIME))

内容的提问来源于stack exchange,提问作者Deepak Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 18:06:04