Изучаю Python, пытаюсь написать скрипт, который из определенной папки берет файл, который создался поздней других. Как это сделать?
question@mail.ru
·
01.01.1970 03:00
Выбор последнего по дате файла из каталога
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. Почему не применить его? Все просто: зачем сортировать список (возможно, большой), когда нужно всего лишь один раз пройти по нему и найти максимальное.