如何获取文件创建和修改日期/时间?

新手上路,请多包涵

获取文件创建和修改日期/时间的最佳跨平台方式是什么,它适用于 Linux 和 Windows?

原文由 Mark Biek 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

在 Python 3.4 及更高版本中,您可以使用面向对象的 pathlib 模块 接口,其中包含大部分 os 模块的包装器。这是获取文件统计信息的示例。

 >>> import pathlib
>>> fname = pathlib.Path('test.py')
>>> assert fname.exists(), f'No such file: {fname}'  # check that the file exists
>>> print(fname.stat())
os.stat_result(st_mode=33206, st_ino=5066549581564298, st_dev=573948050, st_nlink=1, st_uid=0, st_gid=0, st_size=413, st_atime=1523480272, st_mtime=1539787740, st_ctime=1523480272)

有关 os.stat_result 包含的内容的更多信息,请参阅 文档。对于您想要的修改时间 fname.stat().st_mtime

 >>> import datetime
>>> mtime = datetime.datetime.fromtimestamp(fname.stat().st_mtime, tz=datetime.timezone.utc)
>>> print(mtime)
datetime.datetime(2018, 10, 17, 10, 49, 0, 249980)

如果你想要 Windows 上的创建时间,或者 Unix 上的最新元数据更改,你可以使用 fname.stat().st_ctime

 >>> ctime = datetime.datetime.fromtimestamp(fname.stat().st_ctime, tz=datetime.timezone.utc)
>>> print(ctime)
datetime.datetime(2018, 4, 11, 16, 57, 52, 151953)

本文 为 pathlib 模块提供了更多有用的信息和示例。

原文由 Steven C. Howell 发布,翻译遵循 CC BY-SA 4.0 许可协议

以跨平台的方式获取某种修改日期很容易 - 只需调用 os.path.getmtime(path) 你将获得 path 文件最后修改时间的 Unix 时间戳。

另一方面,获取文件 创建 日期非常繁琐且依赖于平台,甚至在三大操作系统之间也有所不同:

The next-best thing on Linux is to access the file’s mtime , through either os.path.getmtime() or the .st_mtime attribute of an os.stat() result.这将为您提供文件内容的最后一次修改时间,这对于某些用例来说可能已经足够了。

将所有这些放在一起,跨平台代码应该看起来像这样……

 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

原文由 Mark Amery 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题