Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/34: Рейтинг темы: голосов - 34, средняя оценка - 4.88
0 / 0 / 1
Регистрация: 26.11.2016
Сообщений: 19

Удаление файла из папки с самым ранним временем создания

13.11.2019, 20:44. Показов 6369. Ответов 3

Студворк — интернет-сервис помощи студентам
Доброго времени суток, уважаемые. Сразу к делу. Появилась необходимость вычислить, какой файл в папке был создан раньше всех по дате создания и, собственно, удалить его. Написал такую функцию, но что то мне подсказывает, что можно сделать это красивее и более pythonic. Подскажите пожалуйста, у кого есть идеи.
Суть алгоритма: в цикле сравниваем поочередно файл со следующим за ним файлом. Если время создания первого меньше, ставим его на место второго и сравниваем уже со следующим( с третьим файлом), если второго меньше, сравниваем со следующим и тд. и тд.
Функция рабочая. Буду рад любым идеям.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def checkdir(path): # принимаем путь
    count = 0
    needfile = ''
    filelist = os.listdir(path) #считываем файлы в папке(предположим в папке только файлы)
    for file in range(0, len(filelist)): #проходимся по списку файлов
        if file == len(filelist) - 1: #для корректного сравнения, алгоритму требуется стоппер
            break
        afile = os.path.getctime(path + f'{filelist[count]}') #сканим время создания первого файла
        afilename = (filelist[count])
        bfile = os.path.getctime(path + f'{filelist[file + 1]}') #второго файла
        bfilename = filelist[file + 1]
        '''далее сравниваем float показателей времени создания и меняем наши каунты'''
        if afile < bfile:
            needfile = filelist[count]
        else:
            needfile = filelist[file + 1]
            count = file + 1
            continue
    os.remove(path + needfile)
    print(needfile)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.11.2019, 20:44
Ответы с готовыми решениями:

Из файлов в корневом каталоге на заданном устройстве выбрать файл с самым поздним временем создания
е). Из файлов в корневом каталоге на устройстве c: выбрать файл с самым поздним временем создания.

Как получить разницу между текущем временем и временем создания файла?
Пробую так #include &lt;time.h&gt; time_t timer; time(&amp;timer); тут timer = 1418974297 милисекунд далее получаю время создани...

6 способов создания файла и папки
Здравствуйте, Если кто знает 6 способов создания файла 6 способов создания папки 2 способа создания ярлыка, напишите, пожалуйста.

3
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
13.11.2019, 21:03
Лучший ответ Сообщение было отмечено PsyPerception как решение

Решение

PsyPerception, "на подумать":
Python
1
2
3
>>> pairs = sorted(((os.path.getctime(name),name) for name in os.listdir() if os.path.isfile(name))) 
>>> pairs[-1]
# Выведет последнюю пару дата создания, имя
можно без времени просто имя сохранять, это я для того, чтобы показать. Ну и проверяю, что файл.
1
0 / 0 / 1
Регистрация: 26.11.2016
Сообщений: 19
13.11.2019, 21:51  [ТС]
Welemir1, Ваш ответ прям супер pythonic, мне нравится. Но при запуске вышего примера у меня ругается на выход за диапазон списка. IndexError: list index out of range
Пока сам до чего дошел в плане улучшения, это вот.

Python
1
2
3
4
5
6
7
8
9
10
11
import os
 
def checkdir(path): # принимаем путь
    sortfile = {}
    filelist = os.listdir(path)
    for file in filelist:
        sortfile[f'{file}'] = os.path.getctime(f'{path}\\' + file)
    needfile = max(sortfile)
    print(needfile)
 
checkdir('C:\\Users\\Admin\\Desktop\\out')
Добавлено через 23 минуты
Welemir1, хотя, все работает. Немного подумав, я понял что к чему.
Python
1
sorted()
великая вещь.

Python
1
2
3
4
5
6
import os
 
def checkdir(path): # принимаем путь
    pairs = sorted(((os.path.getctime(f'{path}\\' + name), name) for name in os.listdir(path) if os.path.isfile( f'{path}\\' + name)))
    needfile = pairs[0][1]
checkdir('C:\\Users\\Admin\\Desktop\\out')
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,694
Записей в блоге: 29
13.11.2019, 21:55
PsyPerception, и в питоне много таких вещей, которые могут упростить ряд задач, изучение матчасти принесет немало пользы. По сравнению с другими языками порой прямо очень удобно, коротко и читаемо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.11.2019, 21:55
Помогаю со студенческими работами здесь

Удаление файла из папки
написал новостную ленту к каждой новости прикреплена фотка, она хранится в БД и папке. у меня 2 вопроса по поводу удаления новости: ...

Удаление файла/папки
Уверен, что в винде за удаление файлов/папок отвечает какая-то программа (или ее часть). Если нет - поправьте. Мне хочется заменить тот...

Удаление файла из папки
Удаление файла из папки.. ошибка: Warning: unlink(gallery/img_cat_mini/795264f7328ed10c42.jpg) : No such file or directory in...

PHP - Удаление файла из папки
&lt;input name=&quot;edit&quot; autocomplete=&quot;off&quot; id=&quot;editid&quot; type=&quot;text&quot;&gt; &lt;button type=&quot;submit&quot;&gt;Удалить&lt;/button&gt; Как при нажатии на кнопку...

Удаление файла из папки appdata
Есть несколько файлов, все они хранятся в папке %appdata%\Microsoft\sometxt.txt Их необходимо удалить. Думаю можно путем получения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru