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

os.path.getmtime()与time.time()结果不一致的原因排查

文件修改时间与预期不符的原因及解决方法

你遇到的问题核心在于操作系统的文件缓存机制:

当你通过Python写入文件时,数据和文件元数据(包括修改时间)不会立刻同步到磁盘,而是先暂存于内存缓存中。操作系统会根据自身调度策略,在合适的时机才将缓存内容刷入磁盘。而os.path.getmtime()读取的是磁盘上实际记录的元数据,并非内存缓存中的最新状态,因此会出现修改时间早于写入前时间的反常情况。

即使with块结束时文件会自动关闭,关闭操作也不保证操作系统立刻完成刷盘,这就导致你读取到的修改时间可能是文件的历史状态。

解决方法

在写入文件后,主动强制刷新缓存到磁盘:

import time
import os

file = "test.txt"
print("before", time.time())
with open(file, "wb") as fh:
    fh.write(b"12345")
    fh.flush()  # 刷新Python层面的文件缓存到系统缓存
    os.fsync(fh.fileno())  # 强制操作系统将缓存同步到磁盘
print("after", time.time())
print("modified", os.path.getmtime(file))

添加这两步后,就能保证修改时间处于before和after的时间区间内,符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:43:22