在Linux和Windows上获得文件创建和修改日期/时间的最佳跨平台方法是什么?


当前回答

操作系统。Stat包含了创建时间。os.stat()中包含时间的元素没有st_anything的定义。

所以试试这个:

os.stat('feedparser.py')[8]

将其与ls -lah文件上的创建日期进行比较

它们应该是一样的。

其他回答

如果下列符号链接不重要,也可以使用操作系统。lstat内置命令。

>>> os.lstat("2048.py")
posix.stat_result(st_mode=33188, st_ino=4172202, st_dev=16777218L, st_nlink=1, st_uid=501, st_gid=20, st_size=2078, st_atime=1423378041, st_mtime=1423377552, st_ctime=1423377553)
>>> os.lstat("2048.py").st_atime
1423378041.0

操作系统。Stat包含了创建时间。os.stat()中包含时间的元素没有st_anything的定义。

所以试试这个:

os.stat('feedparser.py')[8]

将其与ls -lah文件上的创建日期进行比较

它们应该是一样的。

os.stat

在更新的代码中,您可能应该使用os.path.getmtime()(谢谢,Christian Oudard)。

但是请注意,它返回一个带分数秒的浮点值time_t(如果您的操作系统支持它)。

最好的函数是os.path.getmtime()。在内部,这只是使用os.stat(filename).st_mtime。

datetime模块最适合操作时间戳,所以你可以像这样获得一个datetime对象的修改日期:

import os
import datetime
def modification_date(filename):
    t = os.path.getmtime(filename)
    return datetime.datetime.fromtimestamp(t)

使用的例子:

>>> d = modification_date('/var/log/syslog')
>>> print d
2009-10-06 10:50:01
>>> print repr(d)
datetime.datetime(2009, 10, 6, 10, 50, 1)
import os, time, datetime

file = "somefile.txt"
print(file)

print("Modified")
print(os.stat(file)[-2])
print(os.stat(file).st_mtime)
print(os.path.getmtime(file))

print()

print("Created")
print(os.stat(file)[-1])
print(os.stat(file).st_ctime)
print(os.path.getctime(file))

print()

modified = os.path.getmtime(file)
print("Date modified: "+time.ctime(modified))
print("Date modified:",datetime.datetime.fromtimestamp(modified))
year,month,day,hour,minute,second=time.localtime(modified)[:-3]
print("Date modified: %02d/%02d/%d %02d:%02d:%02d"%(day,month,year,hour,minute,second))

print()

created = os.path.getctime(file)
print("Date created: "+time.ctime(created))
print("Date created:",datetime.datetime.fromtimestamp(created))
year,month,day,hour,minute,second=time.localtime(created)[:-3]
print("Date created: %02d/%02d/%d %02d:%02d:%02d"%(day,month,year,hour,minute,second))

打印

somefile.txt
Modified
1429613446
1429613446.0
1429613446.0

Created
1517491049
1517491049.28306
1517491049.28306

Date modified: Tue Apr 21 11:50:46 2015
Date modified: 2015-04-21 11:50:46
Date modified: 21/04/2015 11:50:46

Date created: Thu Feb  1 13:17:29 2018
Date created: 2018-02-01 13:17:29.283060
Date created: 01/02/2018 13:17:29

注意:在Linux上文件的ctime与在Windows上略有不同。 Windows用户把他们的时间称为“创建时间”。 Linux用户把他们的时间称为“改变时间”。