Как получить дату создания файла python

Обновлено: 21.11.2024

В этой статье мы обсудим различные способы получения даты и времени последнего изменения файла и способы их преобразования в различные форматы.

Получить время последней модификации файла с помощью os.stat()


Он возвращает статус файла в виде объекта os.stat_result. Он содержит информацию, относящуюся к файлу, такую ​​как его режим, тип ссылки, доступ, время создания или изменения и т. д.

Чтобы получить время последнего изменения из объекта os.stat_result, обратитесь к свойству ST_MTIME, которое содержит время
самого последнего изменения файла в секундах. Затем мы можем преобразовать это в читаемый формат, используя time.ctime(), т.е.

Получить время последней модификации файла с помощью os.path.getmtime()

Модуль os.path Python предоставляет другой API для получения времени последнего изменения файла, т.е.

Здесь путь представляет собой путь к файлу и возвращает время последней модификации файла в виде количества секунд с начала эпохи. Затем мы можем преобразовать время, прошедшее с эпохи, в другой читаемый формат временной метки. Давайте посмотрим на пример,

Получить время последней модификации с помощью os.path.getmtime() и time.localtime()

time.localtime() преобразует секунды с начала эпохи в struct_time в местном часовом поясе. Затем, передав эту временную структуру в time.strftime(), мы можем получить метку времени в удобочитаемом формате.

Изменив строку формата в time.strftime(), мы можем получить только дату, а также в другом формате, специфичном для нашего приложения, т. е.

Получить время последней модификации с помощью os.path.getmtime() и datetime.fromtimestamp()

Вместо time.localtime() мы также можем использовать другую функцию datetime.fromtimestamp() для преобразования секунд с начала эпохи в объект времени. Затем мы можем вызвать time.strftime(), чтобы преобразовать это в читаемый формат. Например,

Получить время последнего изменения файла в часовом поясе UTC

Чтобы получить время последнего изменения в часовом поясе UTC, используйте datetime.utcfromtimestamp(), т. е.

Полный пример выглядит следующим образом

Вывод:

Учебники по Pandas – изучите анализ данных с помощью Python

Вы хотите сделать карьеру в области Data Science с помощью Python?

Наука о данных — это будущее, и оно уже наступило. На сегодняшний день специалисты по данным являются самыми востребованными профессионалами. Чтобы стать хорошим Data Scientist или сменить профессию в Data Science, нужно обладать нужным набором навыков. Мы составили список лучших профессиональных сертификатов в области науки о данных с помощью Python. Эти курсы научат вас инструментам программирования для науки о данных, таким как Pandas, NumPy, Matplotlib, Seaborn, и тому, как использовать эти библиотеки для реализации моделей машинного обучения.

Ознакомьтесь с подробным обзором лучшего профессионального сертификата по науке о данных с Python.

Помните, что наука о данных требует большого терпения, настойчивости и практики. Итак, начните учиться сегодня.

Присоединяйтесь к сообществу разработчиков Python в LinkedIn

Похожие записи

Вставить элемент в начало массива NumPy

Как добавить столбцы в массив NumPy в Python

Как объединить массивы NumPy в Python?

Добавить строку в массив NumPy в Python

Добавить элементы в конец массива в Python

Как удалить столбцы из массива NumPy

Как удалить строки из массива NumPy

Удалить последний элемент из массива NumPy в Python

Удалить первый элемент из массива NumPy в Python

Проверьте, является ли двумерный массив NumPy или матрица симметричным

Редактировать значения ячеек в CSV-файлах с помощью Pandas в Python

Сортировка массива NumPy в порядке убывания в Python

Преобразование списка в набор в Python

Добавление двух элементов списка в Python

Добавление одного списка к другому списку в Python

Удалить дубликаты из массива NumPy в Python

Проверить, существует ли столбец в Pandas DataFrame

Проверить, равны ли два массива NumPy в Python

Pandas: проверьте, все ли значения в столбце равны нулю

Проверить, все ли значения в столбце являются NaN в Pandas

Оставить комментарий Отменить ответ

Этот сайт использует Akismet для уменьшения количества спама. Узнайте, как обрабатываются данные ваших комментариев.

Реклама

Реклама

Последние сообщения

Учебники по Python

Что-то ищу

Учебники по C++/C++11

Условия использования

Условия и политика

Учебники по Python

Избранные сайты

Отказ от ответственности

Условия и политика

Авторское право © 2022 thisPointer

Техническое хранение или доступ строго необходимы для законных целей, позволяющих использовать конкретную услугу, явно запрошенную подписчиком или пользователем, или с единственной целью осуществления передачи сообщения по сети электронной связи.

Техническое хранение или доступ необходимы для законных целей хранения настроек, которые не запрашиваются подписчиком или пользователем.

Техническое хранилище или доступ, которые используются исключительно для статистических целей. Техническое хранилище или доступ, который используется исключительно для анонимных статистических целей. Без повестки в суд, добровольного согласия со стороны вашего интернет-провайдера или дополнительных записей от третьей стороны информация, хранящаяся или извлекаемая только для этой цели, обычно не может быть использована для вашей идентификации.

Техническое хранилище или доступ необходимы для создания профилей пользователей для отправки рекламы или отслеживания пользователя на веб-сайте или на нескольких веб-сайтах в аналогичных маркетинговых целях.

Техническое хранение или доступ строго необходимы для законных целей, позволяющих использовать конкретную услугу, явно запрошенную подписчиком или пользователем, или с единственной целью осуществления передачи сообщения по сети электронной связи.

Техническое хранение или доступ необходимы для законных целей хранения настроек, которые не запрашиваются подписчиком или пользователем.

Техническое хранилище или доступ, которые используются исключительно для статистических целей. Техническое хранилище или доступ, который используется исключительно для анонимных статистических целей. Без повестки в суд, добровольного согласия со стороны вашего интернет-провайдера или дополнительных записей от третьей стороны информация, хранящаяся или извлекаемая только для этой цели, обычно не может быть использована для вашей идентификации.

Техническое хранилище или доступ необходимы для создания профилей пользователей для отправки рекламы или отслеживания пользователя на веб-сайте или на нескольких веб-сайтах в аналогичных маркетинговых целях.

У меня есть скрипт, который должен делать некоторые вещи на основе дат создания и изменения файлов, но он должен работать в Linux и Windows.

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

Помните, что принятый ответ больше не рекомендуется, используйте pathlib вместо os , см. ответ @StevenC.Howell. Возможно, можно было бы даже изменить принятый ответ на ответ pathlib?

@questionto42, хотя я и согласен, стоит указать причину, по которой вы это советуете. Просто взглянув на этот пост SO, многие увидят (из ответа @StephenCHowell), что pathlib обертывает os , а затем спросят, какой тогда смысл в использовании pathlib? Насколько я понимаю, ответ заключается в том, что pathlib имеет меньшее пространство имен, чем os, и обычно приводит к более чистому коду.

@Jlanger Я написал это, потому что у меня был неудобный код с ОС для сложных рекурсий + проверка пути + замена имени файла в более крупной файловой системе, пока я не нашел pathlib. Pathlib проще и чище — я даже помню, что он был мощнее из-за своих объектов Path, поэтому он был более питоническим. Меньшее пространство имен не имеет значения. Опасно, если сильно используемый Q/A, подобный этому, распространяет старые способы программирования, я взял os и потратил время и нервы, поэтому комментарий. Вы можете найти больше информации о pathlib и os с помощью быстрого поиска в Интернете.

@questionto42 полностью согласен, я знаю о различиях и пытался быть кратким, вы разъяснили лучше, чем я.

12 ответов 12

Получить какую-либо дату модификации кросс-платформенным способом очень просто — просто вызовите os.path.getmtime(path), и вы получите временную метку Unix, когда файл по пути был последнее изменение.

С другой стороны, получение даты создания файла является неудобным и зависит от платформы и различается даже между тремя крупными ОС:

В Linux это в настоящее время невозможно, по крайней мере, без написания расширения C для Python. Хотя некоторые файловые системы, обычно используемые в Linux, хранят даты создания (например, ext4 хранит их в st_crtime ), ядро ​​Linux не предлагает никакого способа доступа к ним; в частности, структуры, которые он возвращает из вызовов stat() в C, начиная с последней версии ядра, не содержат никаких полей даты создания. Вы также можете видеть, что идентификатор st_crtime в настоящее время отсутствует в исходном коде Python. По крайней мере, если вы используете ext4 , данные прикреплены к индексным узлам в файловой системе, но нет удобного способа получить к ним доступ.

Следующим лучшим способом в Linux является доступ к mtime файла либо через os.path.getmtime(), либо через атрибут .st_mtime результата os.stat(). Это даст вам время последнего изменения содержимого файла, чего может быть достаточно для некоторых случаев использования.

Собрав все это вместе, кроссплатформенный код должен выглядеть примерно так.

В Python можно использовать стандартные модули библиотеки os и pathlib для получения меток времени, таких как дата и время создания, изменения и доступа к файлам. Его можно получить во времени Unix (время эпохи, время Posix), но его можно преобразовать в дату и время с помощью модуля datetime.

Вы можете получить следующие метки времени.Значение отличается в зависимости от ОС, поэтому будьте особенно внимательны к времени создания.

  • atime: время доступа.
  • mtime: время модификации
  • ctime: время изменения (Unix) и время создания (Windows)
  • время рождения: время создания (некоторые Unix в семействе FreeBSD, включая macOS)

В этой статье описывается следующее содержание.

  • Получить os.stat_result с отметкой времени
    • Path.stat()
    • os.stat()
    • Атрибуты os.stat_result
    • Межплатформенный подход

    Например, создайте файл и обновите его через 10 секунд.

    Получить os.stat_result с отметкой времени

    Вы можете получить метаданные файла, такие как метки времени, как атрибуты объекта os.stat_result.

    Path.stat()

    Вы можете получить объект os.stat_result с помощью метода stat() объекта pathlib.Path.

    os.stat()

    Вы также можете использовать функцию os.stat() модуля os для получения объекта os.stat_result. Аргумент может быть строкой пути или объектом pathlib.Path (Python 3.6 или более поздней версии).

    Все методы дают один и тот же объект os.stat_result.

    Атрибуты os.stat_result

    Временные метки можно получить с помощью атрибутов st_atime , st_mtime и st_ctime объекта os.stat_result. В некоторых Unix-системах семейства FreeBSD, включая macOS, также есть атрибут st_birthtime. Значение каждого описано позже.

    Все атрибуты представляют собой числа с плавающей запятой и представляют время Unix (время эпохи, время Posix). Как преобразовать это значение в дату и время, описано ниже.

    Есть также st_atime_ns , st_ctime_ns и st_mtime_ns , которые хранят значение целого числа int в наносекундах. Для st_birthtime нет эквивалентного атрибута.

    Обратите внимание, что, как показано в официальной документации, число с плавающей точкой float содержит информацию после десятичной точки, а xxx_ns хранит значения в наносекундах, но точность не гарантируется.

    Точное значение и разрешение атрибутов st_atime, st_mtime и st_ctime зависят от операционной системы и файловой системы. Например, в системах Windows, использующих файловые системы FAT или FAT32, st_mtime имеет разрешение 2 секунды, а st_atime — только 1 день. Для получения подробной информации см. документацию по вашей операционной системе. os — Разные интерфейсы операционной системы — Документация по Python 3.10.0

    os.stat_result имеет различные другие атрибуты, такие как st_size , который указывает размер файла в байтах. См. следующую статью о том, как получить размер файлов и папок.

    Получить метки времени с помощью функции os.path

    Вы также можете получить временные метки с помощью функции os.path, getatime() , getmtime() и getctime() .

    В Python 3.6 или более поздней версии вы также можете указать объект pathlib.Path в качестве аргумента вместо строки пути.

    Как видно из исходного кода, эти функции просто получают соответствующие атрибуты os.stat_result .

    Конечно, вы можете получить точно такое же значение, как при получении os.stat_result с помощью Path.stat() или os.stat() и указании его атрибута.

    Функции для получения st_atime_ns , st_ctime_ns , st_mtime_ns и st_birthtime не предусмотрены.

    Преобразовать метку времени в дату и время

    Как и в предыдущем примере кода, отметка времени выражается во времени Unix (время эпохи, время Posix).

    Чтобы преобразовать его в объект даты и времени, используйте функцию datetime.fromtimestamp() модуля datetime.

    Для получения дополнительной информации, в том числе о том, как указать часовой пояс при преобразовании, см. следующую статью.

    Объект datetime можно преобразовать в строку любого формата или формата ISO.

    Тип отметки времени: atime, ctime, mtime, время рождения

    Как упоминалось во введении, существуют разные типы временных меток: atime, ctime, mtime и время рождения.

    • atime: время доступа.
    • mtime: время модификации
    • ctime: время изменения (Unix) и время создания (Windows)
    • время рождения: время создания (некоторые Unix в семействе FreeBSD, включая macOS)

    Подробности см. на следующей странице.

    Получить дату и время модификации

    Для так называемого времени модификации вы можете получить mtime независимо от ОС.

    Используйте атрибут st_mtime в os.stat_result или функцию os.path.getmtime(), как в примере кода.

    Чтобы преобразовать его в объект даты и времени, используйте функцию datetime.fromtimestamp() модуля datetime.

    В Unix вы можете использовать ctime, чтобы получить время последнего изменения метаданных, поэтому, если вы хотите обнаружить изменения имени файла, например, используйте ctime вместо mtime. Обратите внимание, что в Windows ctime — это время создания.

    Получить дату и время создания

    Как упоминалось выше, способ получения времени создания зависит от ОС.

    • Windows: ctime
    • Некоторые Unix, такие как macOS: время рождения
    • Другие Unix: невозможно получить время создания

    Межплатформенный подход

    Если ваша программа предназначена только для Windows или macOS, вы можете использовать st_ctime или st_birthtime, но если вы хотите поддерживать несколько платформ, вы должны определить функцию.

    Процитируйте пример кода, указанный в следующем вопросе и ответе на Stack Overflow.

    Сначала он проверяет, является ли система Windows, с помощью platform.system() , а затем использует обработку исключений для переключения операции в зависимости от того, существует ли атрибут st_birthtime или нет.

    Дополнительную информацию о платформе.system() и обработке исключений см. в следующей статье.

    Аргументом может быть строка пути или объект pathlib.Path (Python 3.6 или новее).

    Обратите внимание, что функция в этом примере кода возвращает st_mtime , указывающее время модификации, если st_birthtime не существует. В некоторых случаях может быть лучше вернуть None, чтобы четко указать, что время создания не может быть получено.

    Чтобы получить дату изменения файла, просто вызовите os.path.getmtime(path), который совместим с другой платформой (например, Windows, Linux, Mac и т. д.), и вы получите дату последнего изменения данного файла. в параметре. Пример:

    Как получить дату создания файла в Python

    Получить дату создания файла немного сложно, потому что это зависит от платформы, даже между тремя основными операционными системами (Windows, Linux, Mac)

    Датой создания файла является время, когда он был создан. Первое, что нужно сделать, это импортировать в скрипт модули «os» и «time».

    В другой системе

    MCQ Попрактикуйтесь в соревновательных и технических вопросах и ответах с множественным выбором (MCQ) с простыми и логичными объяснениями, чтобы подготовиться к тестам и собеседованиям. Подробнее

    Вам также может понравиться

    Python — создание случайной буквенно-цифровой строки

    Как удалить файл или каталог в Python

    Для чего используется Django?

    Оставить ответ Отменить ответ

    Последние публикации

    Что такое Web Worker в JavaScript?

    В этом руководстве мы рассмотрим, что такое Web Worker в JavaScript? Web Worker позволяет нам

    Как отсортировать массив строк в JavaScript?

    О нас


    Научитесь программировать на разных языках программирования, таких как PHP, Java, Python, C/C++ и т. д., а также на таких фреймворках, как Laravel, Django, Spring и т. д., с помощью наших простых руководств, примеров, упражнений, mcq. и ссылки.

    Очень часто системному администратору приходится работать с файлами и папками, чтобы получить временную метку даты создания файла, имя файла, чтобы извлечь всю информацию в CSV на основе критериев фильтрации.

    Мне нравится работать со сценариями PowerShell, так как задачи легко выполняются в кратчайшие сроки. Используя PowerShell для получения формата даты создания файла, можно легко получить имя файла.

    Чтобы получить дату создания файла в PowerShell, используйте командлет PowerShell Get-ChildItem. Командлет Get-ChildItem используется для получения элементов или дочерних элементов в одном или нескольких указанных расположениях.

    PowerShell Получить формат даты создания файла

    В этой статье я расскажу о том, как получить дату создания файла, получить файлы, созданные сегодня, с помощью PowerShell.

    PowerShell Получить отметку времени создания файла

    Чтобы получить временную метку даты файла в PowerShell, используйте командлет Get-ChildItem. Запустите команду ниже

    В приведенном выше сценарии PowerShell Get-ChildItem получает файловый объект, используя указанное местоположение -Path, и передает выходные данные второй команде.

    Вторая команда выбирает имя файла и свойства файла CreationTime и распечатывает его в консоли PowerShell, как показано ниже

    Полезный совет: как использовать Get-Date для получения текущей даты и времени в PowerShell!

    PowerShell Получить файлы, созданные сегодня

    Чтобы получить файлы, созданные сегодня с помощью PowerShell, используйте командлет Get-ChildItem, чтобы получить файлы и сравнить дату создания файла с сегодняшней датой. Запустите команду ниже

    В приведенном выше сценарии PowerShell для получения файлов, созданных сегодня, первая команда получает объект файла в текущем каталоге и передает результат второй команде.

    Вторая команда сравнивает время создания файла, превышающее сегодняшнюю дату (Get-Date), и получает файлы, созданные сегодня, и выводит результат на консоль.

    PowerShell — получить все файлы с датой создания

    Чтобы получить все файлы с указанием даты и времени создания в PowerShell в порядке убывания в соответствии с меткой времени создания, используйте приведенную ниже команду

    В приведенной выше команде PowerShell первая команда получает файловые объекты в текущем каталоге и передает выходные данные второй команде.

    Вторая команда выбирает имя файла и время создания файла и передает вывод третьей команде.

    Третья команда сортирует файловые объекты по времени их создания, чтобы получить последний созданный файл вверху списка и распечатать список файлов на консоли, как показано ниже

    PowerShell Получить дату создания файла по расширению

    Чтобы найти дату создания файлов по расширению файла, используйте командлет PowerShell Get-ChildItem, чтобы получить файловый объект и применить фильтр расширения, чтобы выбрать только файл.

    В приведенной выше команде PowerShell Get-ChildItem первая команда рекурсивно получает файловые объекты через папки и подпапки и передает результат второй команде.

    Вторая команда ищет расширение файла, равное .txt, и получает только файловые объекты *.txt и передает вывод третьей команде.

    Третья команда выбирает имя файла и время создания файла и выводит их на консоль.

    Полезный совет: как найти файлы большого размера в PowerShell!

    Подсчет файлов, созданных сегодня

    Чтобы получить количество файлов, созданных сегодня, выполните следующую команду PowerShell

    В приведенном выше сценарии PowerShell командлет Get-ChildItem получает файловый объект и передает его второй команде.

    Вторая команда сравнивает дату создания файла с сегодняшней датой и возвращает файловые объекты третьей команде.

    Третья команда Measure-Object выполняет расчет файловых объектов и получает количество файлов, созданных сегодня.

    Полезный совет: как удалить файл, если он существует в PowerShell!

    Заключение

    Я надеюсь, что приведенная выше статья поможет вам эффективно использовать командлет PowerShell Get-ChildItem для получения даты создания файла или поиска файлов, созданных сегодня.

    Дополнительные темы о командах PowerShell Active Directory и основах PowerShell можно найти на домашней странице ShellGeek.

    Читайте также: