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

2022-09-05 01:01:40

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


答案 1

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

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

把这些放在一起,跨平台代码应该看起来像这样......

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

答案 2

您有几种选择。首先,您可以使用 os.path.getmtimeos.path.getctime 函数:

import os.path, time
print("last modified: %s" % time.ctime(os.path.getmtime(file)))
print("created: %s" % time.ctime(os.path.getctime(file)))

您的另一个选择是使用 os.stat

import os, time
(mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(file)
print("last modified: %s" % time.ctime(mtime))

注意是指 *nix 系统上的创建时间,而是指 inode 数据上次更改的时间。(感谢kojiro通过提供指向有趣博客文章的链接,在评论中使这一事实更加清晰ctime()