首页 > 后端开发 > Python教程 > 如何可靠地获取不同操作系统上的文件创建和修改时间?

如何可靠地获取不同操作系统上的文件创建和修改时间?

Mary-Kate Olsen
发布: 2024-12-22 19:40:12
原创
651 人浏览过

How Can I Reliably Get File Creation and Modification Times Across Different Operating Systems?

跨平台文件创建和修改日期/时间检索

可以获取跨不同操作系统的文件创建和修改日期/时间一项复杂的任务。

修改日期

使用 os.path.getmtime() 跨平台获取文件修改日期相对简单,它提供上次修改的 Unix 时间戳。

创建日期

对于文件创建日期,由于平台特定,该过程变得更加复杂实现:

  • Windows: Windows 将创建日期存储在文件的 ctime 中。可以通过 os.path.getctime() 或 os.stat() 的 .st_ctime 属性进行访问。
  • Mac: 在 Mac 和某些基于 Unix 的操作系统上,.st_birthtime os.stat() 的属性提供了创建日期。
  • Linux: Linux 确实目前没有标准化的方法来检索创建日期。虽然某些文件系统(如 ext4)存储数据,但 Linux 内核不提供直接访问数据的方法。最接近的替代方案是文件的 mtime,它指示最后一次内容修改。

跨平台代码

结合这些特定于平台的方法,跨平台平台代码片段如下:

import os
import platform

def creation_date(path_to_file):
    """
    Try to get the date that a file was created, falling back to when it was
    last modified if that isn't possible.
    See http://stackoverflow.com/a/39501288/1709587 for explanation.
    """
    if platform.system() == 'Windows':
        return os.path.getctime(path_to_file)
    else:
        stat = os.stat(path_to_file)
        try:
            return stat.st_birthtime
        except AttributeError:
            # We're probably on Linux. No easy way to get creation dates here,
            # so we'll settle for when its content was last modified.
            return stat.st_mtime
登录后复制

此代码首先检查平台以应用适当的方法。在 Windows 上,它使用 os.path.getctime(),而在 Mac 和一些基于 Unix 的操作系统上,它尝试使用 .st_birthtime 检索创建日期。对于 Linux,它回退到通过 .st_mtime 获取的修改日期。

以上是如何可靠地获取不同操作系统上的文件创建和修改时间?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板