0

0

Python怎么获取文件创建时间_os.path.getctime与时间戳转换

P粉602998670

P粉602998670

发布时间:2026-03-17 11:21:31

|

740人浏览过

|

来源于php中文网

原创

os.path.getctime返回的是文件创建时间(Windows)或inode元数据最后修改时间(macOS/Linux),非跨平台一致;需用time.ctime()或datetime.fromtimestamp()转换,注意时区;Linux/ext4等不存创建时间,无标准跨平台方案。

python怎么获取文件创建时间_os.path.getctime与时间戳转换

os.path.getctime 返回的是什么时间?

在 Windows 上,os.path.getctime 真实返回的是「文件创建时间」;但在 macOS 和 Linux 上,它返回的是「inode 元数据最后一次修改时间」(比如权限变更、重命名),**不是创建时间**——系统压根不记录或不暴露真正的创建时间。

这意味着:跨平台代码里直接依赖 os.path.getctime 拿“创建时间”,大概率在非 Windows 环境下逻辑出错。

  • Linux/macOS 下改过文件权限、移动过文件、甚至用 touch 更新过 mtime,os.path.getctime 都可能变
  • Windows 下相对可靠,但 NTFS 卷上若启用了「8.3 短文件名」或某些备份工具操作过,也可能被干扰
  • 别把它和 os.path.getmtime(内容最后修改)或 os.path.getatime(最后访问)混淆——三者语义完全不同

怎么把 getctime 的结果转成可读时间?

它返回的是秒级时间戳(float 类型),直接传给 time.ctime()datetime.fromtimestamp() 就行,但要注意时区:

  • time.ctime(os.path.getctime(path)) 用本地时区,最简单,适合日志打印
  • datetime.fromtimestamp(os.path.getctime(path)) 同样是本地时区;如果需要 UTC,得用 datetime.utcfromtimestamp()
  • 别用 datetime.fromtimestamp(ts, tz=timezone.utc) 直接套——因为 os.path.getctime 返回的本来就是系统本地时间戳(不是 UTC 时间戳),强行指定 UTC 会偏移 8 小时(东八区)

示例:

import os, time
path = "test.txt"
print(time.ctime(os.path.getctime(path)))  # 输出类似:Mon Apr 15 10:23:41 2024

想跨平台获取真正创建时间?没标准方案

Python 标准库不提供跨平台创建时间支持,因为底层 OS 不统一。真有强需求,只能按平台分路径处理:

WPS灵犀
WPS灵犀

WPS灵犀是WPS推出的一款AI智能办公和学习助手

下载

立即学习Python免费学习笔记(深入)”;

  • Windows:继续用 os.path.getctime,基本可用
  • macOS:可以用 stat 命令调用 os.stat(path).st_birthtime(仅限较新版本 Python + APFS/HFS+ 卷)
  • Linux:绝大多数文件系统(ext4/xfs)**根本不存创建时间**,st_birthtime 字段不存在或为 0;别白费劲查文档了
  • 替代思路:用 subprocess 调用平台命令(如 macOS 的 stat -f "%B" {path}),但要处理命令不存在、输出格式变化、权限失败等问题

容易被忽略的细节:浮点精度与 NFS/网络文件系统

os.path.getctime 返回的 float 时间戳,在某些 NFS 挂载点或容器环境里,可能被截断成秒级整数,丢失毫秒精度;更糟的是,部分 NAS 或旧版 Samba 服务压根不透传 ctime,返回 0 或一个固定旧时间。

  • 检查是否为 0:if os.path.getctime(path) == 0: 很可能是挂载问题或权限不足
  • 不要拿它做高精度时间比对(比如判断“是否刚创建”),误差可能达数秒
  • 如果业务强依赖创建时间,建议在写入文件时主动写入元数据(比如 JSON 文件头里存 "created_at": datetime.now().isoformat()

这事没有银弹。平台差异、文件系统限制、权限边界——每个都可能让 ctime 变成不可靠信号。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

458

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

549

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

337

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

84

2025.09.10

css中float用法
css中float用法

css中float属性允许元素脱离文档流并沿其父元素边缘排列,用于创建并排列、对齐文本图像、浮动菜单边栏和重叠元素。想了解更多float的相关内容,可以阅读本专题下面的文章。

597

2024.04.28

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

108

2025.10.23

if什么意思
if什么意思

if的意思是“如果”的条件。它是一个用于引导条件语句的关键词,用于根据特定条件的真假情况来执行不同的代码块。本专题提供if什么意思的相关文章,供大家免费阅读。

847

2023.08.22

windows查看端口占用情况
windows查看端口占用情况

Windows端口可以认为是计算机与外界通讯交流的出入口。逻辑意义上的端口一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。怎么查看windows端口占用情况呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

1541

2023.07.26

c++ 字符处理
c++ 字符处理

本专题整合了c++字符处理教程、字符串处理函数相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.03.17

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 5.1万人学习

SciPy 教程
SciPy 教程

共10课时 | 2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号