Получение какой-либо даты модификации кросс-платформенным способом легко - просто вызовите os.path.getmtime(path)
, и вы получите отметку времени Unix, когда последний файл в path
был последним изменен.
Получение дат создания файла , с другой стороны, неудобно и зависит от платформы, различающееся даже между тремя большими ОС: Положив все это вместе, межплатформенный код должен выглядеть примерно так ... ctime
файла (задокументированный в https://msdn.microsoft.com/en-us/library/14h5k7ff.aspx ) сохраняет дату создания. Вы можете получить доступ к этому в Python через os.path.getctime()
или атрибут .st_ctime
результата вызова os.stat()
. Этот не будет работать в Unix, где ctime
- последний раз, когда атрибуты или содержимое файла были изменены . .st_birthtime
результата вызова os.stat()
. ext4
хранит их в st_crtime
), ядро Linux не имеет доступа к ним ; в частности, структуры, которые он возвращает из вызовов stat()
в C, начиная с последней версии ядра, не содержат полей даты создания . Вы также можете видеть, что идентификатор st_crtime
в настоящее время не присутствует нигде в источнике Python . По крайней мере, если вы находитесь на ext4
, данные - , прикрепленные к inodes в файловой системе, но нет удобного способа доступа к нему. Следующей лучшей идеей в Linux является доступ к файлу mtime
с помощью либо os.path.getmtime()
, либо атрибута .st_mtime
результата os.stat()
. Это даст вам последний раз, когда содержимое файла было изменено, что может быть подходящим для некоторых случаев использования. 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