13

Как получить даты/времена создания и изменения файла?

16

Какой наилучший кросс-платформенный способ получить даты и времена создания и модификации файлов, который будет работать как на Linux, так и на Windows?

5 ответ(ов)

0

Для получения информации о времени изменения и создания файла в 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 считают это "временем изменения".

0

Функция os.stat возвращает именованный кортеж, содержащий атрибуты st_mtime и st_ctime. Время модификации представлено атрибутом st_mtime на обеих платформах. Однако, стоит учитывать, что на Windows ctime означает "время создания", в то время как на POSIX системах оно обозначает "время изменения". К сожалению, мне ничего не известно о способах получения времени создания файла на платформах POSIX.

0

Я тоже являюсь поклонником 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, не стесняйтесь спрашивать!

0

Для получения времени последнего изменения и времени создания файла в 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, если это потребуется.

0

Если вам не важны символические ссылки, вы можете использовать встроенную функцию 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).

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь