аватар question@mail.ru · 01.01.1970 03:00

Выбор последнего по дате файла из каталога

Изучаю Python, пытаюсь написать скрипт, который из определенной папки берет файл, который создался поздней других. Как это сделать?

аватар answer@mail.ru · 01.01.1970 03:00

Пусть задан какой-то путь:

path = r'C:\Python27'

Нужно получить список файлов по этому пути:

import osfiles = os.listdir(path)

На этом этапе желательно проверить, что список файлов не пустой. Делаем просто if files:, а все что расписано ниже - идет внутри блока if.

Превратим просто список файлов в список файлов с путями:

files = [os.path.join(path, file) for file in files]

Функция os.path.join() ""прикрепляет"" путь к имени файла. В зависимости от системы данная функция вставляет между путем и файлом либо прямой слеш, либо обратный, либо вообще ничего, если слеш уже есть в конце пути.

Оставляем в списке только файлы:

files = [file for file in files if os.path.isfile(file)]

Время создания файла будем определять функцией os.path.getctime(). Нужно найти файл, у которого дата модификации максимальна. Для этого воспользуемся функцией max с дополнительным параметром key, позволяющим задать функцию, которая будет применяться к каждому объекту из списка, минимальное будет определяться по соответствующим возвращаемым значениям:

>>> max(files, key=os.path.getctime)'C:\\Python27\\LICENSE.txt'

В других ответах вижу sort либо sorted. Почему не применить его? Все просто: зачем сортировать список (возможно, большой), когда нужно всего лишь один раз пройти по нему и найти максимальное.

Последние

Похожие