Last updated on

os.path.getmtime 用来获取文件最后一次修改时间(Modification Time)


os.path.getmtime 用来获取文件最后一次“修改时间”,在做缓存、同步、是否需要重新下载时非常有用。


基本含义 ”Modification Time“

os.path.getmtime(path)

返回值:

  • 一个 float
  • 表示 自 Unix Epoch(1970-01-01 00:00:00 UTC)以来的秒数

使用前提

import os

最基本示例

mtime = os.path.getmtime("data.csv")
print(mtime)

输出类似:

1735554321.123456

这不是人类友好的时间,而是时间戳。


转成人类可读时间(常用)

import time

mtime = os.path.getmtime("data.csv")
print(time.ctime(mtime)) #Change Time

示例输出:

Tue Dec 31 10:45:21 2025

更推荐的写法(datetime)

from datetime import datetime

mtime = os.path.getmtime("data.csv")
dt = datetime.fromtimestamp(mtime)
print(dt)

你这个项目里它的典型用途(重点)

你在做的是:

  • Google Sheets → CSV
  • 本地缓存
  • 定期刷新

典型逻辑就是:

if os.path.exists(path):
    age = time.time() - os.path.getmtime(path)
    if age < 3600:   # 1 小时
        use_cache()
    else:
        re_download()

常见错误点(一定要知道)

1️⃣ 文件不存在会直接报错

os.path.getmtime("not_exist.csv")

会抛出:

FileNotFoundError

所以必须先判断存在性

if os.path.exists(path):
    os.path.getmtime(path)

2️⃣ mtime ≠ 创建时间

  • mtime:内容被修改的时间
  • 不是文件创建时间

如果你用的是 macOS:

  • getctime 返回的是 metadata change time
  • 不是严格意义的创建时间(很容易被误用)

对比一下几个时间函数

函数含义
getmtime内容修改时间(最常用)
getatime最后访问时间
getctime元数据变更时间(macOS/Linux)

pathlib 等价写法(推荐)

from pathlib import Path

mtime = Path("data.csv").stat().st_mtime

一句话总结

os.path.getmtime(path) = “这个文件上次被修改是什么时候?”

缓存、同步、是否重新拉取远程数据这类场景中,它是核心工具之一。