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

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

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-22 19:40:12652浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn