Как получить даты/времена создания и изменения файла?
Какой наилучший кросс-платформенный способ получить даты и времена создания и модификации файлов, который будет работать как на Linux, так и на Windows?
5 ответ(ов)
Для получения информации о времени изменения и создания файла в Python можно использовать библиотеку os
. Код ниже демонстрирует, как это сделать:
import os
import time
import datetime
file = "somefile.txt"
print(file)
print("Изменено")
print(os.stat(file)[-2]) # Время изменения в формате Unix timestamp
print(os.stat(file).st_mtime) # Время изменения
print(os.path.getmtime(file)) # Время изменения через os.path
print()
print("Создано")
print(os.stat(file)[-1]) # Время создания в формате Unix timestamp
print(os.stat(file).st_ctime) # Время создания
print(os.path.getctime(file)) # Время создания через os.path
print()
modified = os.path.getmtime(file)
print("Дата изменения: " + time.ctime(modified)) # Читаемый формат
print("Дата изменения:", datetime.datetime.fromtimestamp(modified)) # Дата и время
year, month, day, hour, minute, second = time.localtime(modified)[:-3]
print("Дата изменения: %02d/%02d/%d %02d:%02d:%02d" % (day, month, year, hour, minute, second))
print()
created = os.path.getctime(file)
print("Дата создания: " + time.ctime(created)) # Читаемый формат
print("Дата создания:", datetime.datetime.fromtimestamp(created)) # Дата и время
year, month, day, hour, minute, second = time.localtime(created)[:-3]
print("Дата создания: %02d/%02d/%d %02d:%02d:%02d" % (day, month, year, hour, minute, second))
Программа выведет следующую информацию:
somefile.txt
Изменено
1429613446
1429613446.0
1429613446.0
Создано
1517491049
1517491049.28306
1517491049.28306
Дата изменения: Tue Apr 21 11:50:46 2015
Дата изменения: 2015-04-21 11:50:46
Дата изменения: 21/04/2015 11:50:46
Дата создания: Thu Feb 1 13:17:29 2018
Дата создания: 2018-02-01 13:17:29.283060
Дата создания: 01/02/2018 13:17:29
Обратите внимание: время создания файла (ctime
) на Linux и Windows немного различается. Пользователи Windows знакомы с ним как с "временем создания", тогда как пользователи Linux считают это "временем изменения".
Функция os.stat
возвращает именованный кортеж, содержащий атрибуты st_mtime
и st_ctime
. Время модификации представлено атрибутом st_mtime
на обеих платформах. Однако, стоит учитывать, что на Windows ctime
означает "время создания", в то время как на POSIX системах оно обозначает "время изменения". К сожалению, мне ничего не известно о способах получения времени создания файла на платформах POSIX.
Я тоже являюсь поклонником pathlib
. Ваш код выглядит отлично и его можно использовать для получения временных меток файла. Вот ваш код с небольшими пояснениями на русском:
from pathlib import Path
target = Path('out/soong/build.ninja') # Указываем путь к файлу
mtime = target.stat().st_mtime # Время изменения (mtime)
atime = target.stat().st_atime # Время доступа (atime)
ctime = target.stat().st_ctime # Время изменения метаданных (ctime)
Этот код работает как на стандартных системах, так и в Windows Subsystem for Linux (WSL), так что вы можете использовать его без проблем. Убедитесь, что указанный вами путь корректен и файл существует, чтобы избежать ошибок. Если у вас есть еще вопросы по pathlib
, не стесняйтесь спрашивать!
Для получения времени последнего изменения и времени создания файла в Python вы можете использовать модуль os
и функцию os.stat()
. Вот пример кода:
import os
# Получение информации о файле 'feedparser.py'
file_stat = os.stat('feedparser.py')
# Время последнего изменения
mtime = file_stat.st_mtime
print(f"Время последнего изменения: {mtime}")
# Время создания файла
ctime = file_stat.st_ctime
print(f"Время создания файла: {ctime}")
В данном коде st_mtime
возвращает время последнего изменения файла, а st_ctime
— время его создания. Обратите внимание, что значения времени представлены в формате timestamp (количество секунд с 1 января 1970 года). Вы можете преобразовать их в более читаемый формат с помощью модуля datetime
, если это потребуется.
Если вам не важны символические ссылки, вы можете использовать встроенную функцию os.lstat
.
Пример использования:
>>> os.lstat("2048.py")
posix.stat_result(st_mode=33188, st_ino=4172202, st_dev=16777218, 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
В этом примере os.lstat
возвращает объект posix.stat_result
, содержащий информацию о файле 2048.py
, такую как время последнего доступа (в данном случае st_atime
).
Как читать файл построчно в список?
Как удалить не пустую папку?
Сохранение списка в файл с помощью Python с учетом переносов строк
"TypeError: требуется объект, похожий на bytes, а не 'str' при обработке содержимого файла в Python 3"
Как отсортировать список/кортеж списков/кортежей по элементу на заданном индексе