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

Формирование списка из имен файлов

25.11.2018, 18:08. Показов 1380. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Есть папка с файлами, их около 200 (пример: SLMA00.T00-24.05032017,...,SLMA00.T00-24.0202017,...,SLMA00.T00-24.07072017,SLMA00.T00-24.1305017,...,SLMA00.T00-24.02092017, ...- это файлы формата grib с метеорологическими данными ). Они изначально неотсортированы. Нужно сформировать список из имен этих файлов так, чтобы они были отсортированы по дате в названии по возрастанию, то есть: SLMA00.T00-24.02022017,...,SLMA00.T00-24.05032017,..., SLMA00.T00-24.1305017,...,24.07072017,...,SLMA00.T0 0-24.02092017,... . При этом, в папке находятся также файлы других форматов, которые нужно исключать при формировании списка.

Есть код, который просто формирует неотсортированный список:
Python
1
2
3
4
5
6
7
8
import os
 
gribfiles = []
path = 'data2017/weather/'
for file in os.listdir(path):
    if file.endswith("2017"):
    gribfiles.append(str(file))
print(gribfiles)
Буду благодарен за помощь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.11.2018, 18:08
Ответы с готовыми решениями:

Формирование списка из имен файлов
Есть несколько сотен txt файлов, нужно собрать их названия в один общий файл, разделив на два столбика. исходные названия 01-18-2021...

Формирование бинарного дерева из списка имен.
Написать правило, формирующее бинарное дерево из списка имен с обозначением номера узла дерева, в который имя помещается. Список имен:...

Поиск на диске файлов с расширениями .txt и .docx и создание списка имён найденных файлов
Помогите, нужно создать bat файл, который ищет на диске файлы *.txt *docx а потом создаёт список с их именами.

6
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
25.11.2018, 18:25
У вас дата неправильная - 1305017.
Это ваша ошибка или так и есть?
И на будущее - предоставляйте пример с готовыми данными.

Добавлено через 1 минуту
Возможное решение сортировки:
Python
1
2
3
4
>>> l = ['SLMA00.T00-24.05032017', 'SLMA00.T00-24.13052017']
>>> sorted(l,key=lambda f:datetime.strptime(f.split('.')[-1],'%d%m%Y'))
['SLMA00.T00-24.05032017', 'SLMA00.T00-24.13052017']
>>>
0
0 / 0 / 0
Регистрация: 31.01.2017
Сообщений: 48
25.11.2018, 18:49  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
У вас дата неправильная - 1305017.
Это ваша ошибка или так и есть?
Это моя ошибка, прошу прощения.
Цитата Сообщение от Garry Galler Посмотреть сообщение
И на будущее - предоставляйте пример с готовыми данными.
Что вы имеете в виду под готовыми данными? У меня есть набор файлов,в названии которых меняется дата, месяц,год в диапазоне *022017 - *102017, где * - день месяца. Но при этом может быть такое, что некоторые дни отсутствуют
Добавлено через 1 минуту
Цитата Сообщение от Garry Galler Посмотреть сообщение
Возможное решение сортировки:
Python
1
2
3
4
>>> l = ['SLMA00.T00-24.05032017', 'SLMA00.T00-24.13052017']
>>> sorted(l,key=lambda f:datetime.strptime(f.split('.')[-1],'%d%m%Y'))
['SLMA00.T00-24.05032017', 'SLMA00.T00-24.13052017']
>>>
Можете, пожалуйста, объяснить подробнее, что происходит во 2 строке кода?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
25.11.2018, 18:55
Цитата Сообщение от Artey Посмотреть сообщение
Что вы имеете в виду под готовыми данными?
Одно из условий получения быстрого - и по делу - ответа - минимальный, самодостаточный и воспроизводимый пример.
Чтобы тому, кто взялся вам отвечать, нужно было только скопировать ваш пример и данные (список\словарь\файл в аттачменте) и запустить код без необходимости самостоятельно воссоздавать все это.
Цитата Сообщение от Artey Посмотреть сообщение
что происходит во 2 строке кода
1) Сплит по точке,
2) взятие по индексу последнего значения (строка с датой),
3) преобразование подстроки в тип datetime исходя из формата %d%m%Y),
4) lambda как анонимная сортировочная функция по полученному значению.
Все.
0
0 / 0 / 0
Регистрация: 31.01.2017
Сообщений: 48
25.11.2018, 19:27  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
import os
 
gribfiles = []
path = 'data2017/weather/'
for file in os.listdir(path):
    if file.endswith("2017"):
    gribfiles.append(str(file))
sorted(gribfiles,key=lambda f:datetime.strptime(f.split('.')[-1],'%d%m%Y'))
print(gribfiles)
['SLMA00.T00-24.02032017', 'SLMA00.T00-24.03032017', 'SLMA00.T00-24.04032017', 'SLMA00.T00-24.05032017', 'SLMA00.T00-24.06032017', 'SLMA00.T00-24.07032017', 'SLMA00.T00-24.08032017', 'SLMA00.T00-24.09032017', 'SLMA00.T00-24.10032017', 'SLMA00.T00-24.11032017', 'SLMA00.T00-24.12032017', 'SLMA00.T00-24.13032017', 'SLMA00.T00-24.14032017', 'SLMA00.T00-24.15032017', 'SLMA00.T00-24.16032017', 'SLMA00.T00-24.17032017', 'SLMA00.T00-24.18032017', 'SLMA00.T00-24.19032017', 'SLMA00.T00-24.20022017', 'SLMA00.T00-24.20032017', 'SLMA00.T00-24.21032017', 'SLMA00.T00-24.22022017', 'SLMA00.T00-24.22032017', 'SLMA00.T00-24.23022017', 'SLMA00.T00-24.23032017', 'SLMA00.T00-24.24022017', 'SLMA00.T00-24.24032017', 'SLMA00.T00-24.25022017', 'SLMA00.T00-24.25032017', 'SLMA00.T00-24.26022017', 'SLMA00.T00-24.26032017', 'SLMA00.T00-24.27032017', 'SLMA00.T00-24.28022017', 'SLMA00.T00-24.28032017', 'SLMA00.T00-24.29032017', 'SLMA00.T00-24.30032017', 'SLMA00.T00-24.31032017', 'SLMA00.T00-24.01042017', 'SLMA00.T00-24.02042017', 'SLMA00.T00-24.03042017', 'SLMA00.T00-24.04042017', 'SLMA00.T00-24.05042017', 'SLMA00.T00-24.06042017', 'SLMA00.T00-24.07042017', 'SLMA00.T00-24.08042017', 'SLMA00.T00-24.09042017', 'SLMA00.T00-24.10042017', 'SLMA00.T00-24.11042017', 'SLMA00.T00-24.12042017', 'SLMA00.T00-24.13042017', 'SLMA00.T00-24.14042017', 'SLMA00.T00-24.15042017', 'SLMA00.T00-24.16042017', 'SLMA00.T00-24.17042017', 'SLMA00.T00-24.18042017', 'SLMA00.T00-24.19042017', 'SLMA00.T00-24.20042017', 'SLMA00.T00-24.21042017', 'SLMA00.T00-24.22042017', 'SLMA00.T00-24.23042017', 'SLMA00.T00-24.24042017', 'SLMA00.T00-24.25042017', 'SLMA00.T00-24.26042017', 'SLMA00.T00-24.27042017', 'SLMA00.T00-24.28042017', 'SLMA00.T00-24.29042017', 'SLMA00.T00-24.30042017', 'SLMA00.T00-24.01052017', 'SLMA00.T00-24.02052017', 'SLMA00.T00-24.03052017', 'SLMA00.T00-24.04052017', 'SLMA00.T00-24.05052017', 'SLMA00.T00-24.06052017', 'SLMA00.T00-24.07052017', 'SLMA00.T00-24.08052017', 'SLMA00.T00-24.09052017', 'SLMA00.T00-24.10052017', 'SLMA00.T00-24.11052017', 'SLMA00.T00-24.12052017', 'SLMA00.T00-24.13052017', 'SLMA00.T00-24.14052017', 'SLMA00.T00-24.16052017', 'SLMA00.T00-24.17052017', 'SLMA00.T00-24.18052017', 'SLMA00.T00-24.19052017', 'SLMA00.T00-24.20052017', 'SLMA00.T00-24.21052017', 'SLMA00.T00-24.22052017', 'SLMA00.T00-24.23052017', 'SLMA00.T00-24.24052017', 'SLMA00.T00-24.25052017', 'SLMA00.T00-24.26052017', 'SLMA00.T00-24.27052017', 'SLMA00.T00-24.28052017', 'SLMA00.T00-24.29052017', 'SLMA00.T00-24.30052017', 'SLMA00.T00-24.31052017', 'SLMA00.T00-24.01062017', 'SLMA00.T00-24.02062017', 'SLMA00.T00-24.03062017', 'SLMA00.T00-24.04062017', 'SLMA00.T00-24.05062017', 'SLMA00.T00-24.06062017', 'SLMA00.T00-24.07062017', 'SLMA00.T00-24.08062017', 'SLMA00.T00-24.09062017', 'SLMA00.T00-24.10062017', 'SLMA00.T00-24.11062017', 'SLMA00.T00-24.12062017', 'SLMA00.T00-24.13062017', 'SLMA00.T00-24.14062017', 'SLMA00.T00-24.15062017', 'SLMA00.T00-24.16062017', 'SLMA00.T00-24.17062017', 'SLMA00.T00-24.18062017', 'SLMA00.T00-24.19062017', 'SLMA00.T00-24.20062017', 'SLMA00.T00-24.21062017', 'SLMA00.T00-24.22062017', 'SLMA00.T00-24.23062017', 'SLMA00.T00-24.24062017', 'SLMA00.T00-24.25062017', 'SLMA00.T00-24.26062017', 'SLMA00.T00-24.27062017', 'SLMA00.T00-24.28062017', 'SLMA00.T00-24.29062017', 'SLMA00.T00-24.30062017', 'SLMA00.T00-24.01072017', 'SLMA00.T00-24.02072017', 'SLMA00.T00-24.03072017', 'SLMA00.T00-24.04072017', 'SLMA00.T00-24.05072017', 'SLMA00.T00-24.06072017', 'SLMA00.T00-24.07072017', 'SLMA00.T00-24.08072017', 'SLMA00.T00-24.09072017', 'SLMA00.T00-24.10072017', 'SLMA00.T00-24.11072017', 'SLMA00.T00-24.12072017', 'SLMA00.T00-24.13072017', 'SLMA00.T00-24.14072017', 'SLMA00.T00-24.15072017', 'SLMA00.T00-24.16072017', 'SLMA00.T00-24.17072017', 'SLMA00.T00-24.18072017', 'SLMA00.T00-24.19072017', 'SLMA00.T00-24.20072017', 'SLMA00.T00-24.21072017', 'SLMA00.T00-24.22072017', 'SLMA00.T00-24.23072017', 'SLMA00.T00-24.24072017', 'SLMA00.T00-24.25072017', 'SLMA00.T00-24.26072017', 'SLMA00.T00-24.27072017', 'SLMA00.T00-24.28072017', 'SLMA00.T00-24.29072017', 'SLMA00.T00-24.30072017', 'SLMA00.T00-24.31072017', 'SLMA00.T00-24.01082017', 'SLMA00.T00-24.02082017', 'SLMA00.T00-24.03082017', 'SLMA00.T00-24.04082017', 'SLMA00.T00-24.05082017', 'SLMA00.T00-24.06082017', 'SLMA00.T00-24.07082017', 'SLMA00.T00-24.08082017', 'SLMA00.T00-24.09082017', 'SLMA00.T00-24.10082017', 'SLMA00.T00-24.12082017', 'SLMA00.T00-24.13082017', 'SLMA00.T00-24.14082017', 'SLMA00.T00-24.15082017', 'SLMA00.T00-24.18082017', 'SLMA00.T00-24.19082017', 'SLMA00.T00-24.20082017', 'SLMA00.T00-24.21082017', 'SLMA00.T00-24.23082017', 'SLMA00.T00-24.24082017', 'SLMA00.T00-24.25082017', 'SLMA00.T00-24.26082017', 'SLMA00.T00-24.27082017', 'SLMA00.T00-24.28082017', 'SLMA00.T00-24.29082017', 'SLMA00.T00-24.30082017', 'SLMA00.T00-24.31082017', 'SLMA00.T00-24.01092017', 'SLMA00.T00-24.02092017', 'SLMA00.T00-24.03092017', 'SLMA00.T00-24.04092017', 'SLMA00.T00-24.05092017', 'SLMA00.T00-24.06092017', 'SLMA00.T00-24.07092017', 'SLMA00.T00-24.08092017', 'SLMA00.T00-24.09092017', 'SLMA00.T00-24.10092017', 'SLMA00.T00-24.11092017', 'SLMA00.T00-24.12092017', 'SLMA00.T00-24.13092017', 'SLMA00.T00-24.14092017', 'SLMA00.T00-24.15092017', 'SLMA00.T00-24.16092017', 'SLMA00.T00-24.17092017', 'SLMA00.T00-24.18092017', 'SLMA00.T00-24.19092017', 'SLMA00.T00-24.20092017', 'SLMA00.T00-24.21092017', 'SLMA00.T00-24.22092017', 'SLMA00.T00-24.23092017', 'SLMA00.T00-24.24092017', 'SLMA00.T00-24.25092017', 'SLMA00.T00-24.26092017', 'SLMA00.T00-24.27092017', 'SLMA00.T00-24.28092017', 'SLMA00.T00-24.29092017', 'SLMA00.T00-24.30092017', 'SLMA00.T00-24.01102017', 'SLMA00.T00-24.03102017', 'SLMA00.T00-24.06102017', 'SLMA00.T00-24.07102017', 'SLMA00.T00-24.09102017', 'SLMA00.T00-24.10102017', 'SLMA00.T00-24.11102017', 'SLMA00.T00-24.12102017', 'SLMA00.T00-24.13102017', 'SLMA00.T00-24.14102017', 'SLMA00.T00-24.15102017', 'SLMA00.T00-24.16102017', 'SLMA00.T00-24.17102017', 'SLMA00.T00-24.18102017', 'SLMA00.T00-24.19102017', 'SLMA00.T00-24.20102017', 'SLMA00.T00-24.21102017', 'SLMA00.T00-24.22102017', 'SLMA00.T00-24.23102017', 'SLMA00.T00-24.24102017', 'SLMA00.T00-24.25102017', 'SLMA00.T00-24.26102017', 'SLMA00.T00-24.27102017', 'SLMA00.T00-24.28102017', 'SLMA00.T00-24.29102017', 'SLMA00.T00-24.30102017', 'SLMA00.T00-24.31102017']
Что-то не работает: 'SLMA00.T00-24.19032017', 'SLMA00.T00-24.20022017', 'SLMA00.T00-24.20032017', 'SLMA00.T00-24.21032017', 'SLMA00.T00-24.22022017', 'SLMA00.T00-24.22032017', 'SLMA00.T00-24.23022017', 'SLMA00.T00-24.23032017'.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
25.11.2018, 19:31
Цитата Сообщение от Artey Посмотреть сообщение
Что-то не работает
Перед тем как запускать код, стоит прочитать документацию по используемой функции.
sorted не сортирует in-place, а возвращает новый отсортированный список. Исходный остается как есть.
in-place делает sort.
1
0 / 0 / 0
Регистрация: 31.01.2017
Сообщений: 48
25.11.2018, 20:41  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Перед тем как запускать код, стоит прочитать документацию по используемой функции.
sorted не сортирует in-place, а возвращает новый отсортированный список. Исходный остается как есть.
in-place делает sort.
Спасибо вам огромное! Теперь все работает.

Python
1
2
3
4
5
6
7
8
9
import os
 
gribfiles = []
path = 'data2017/weather/'
for file in os.listdir(path):
    if file.endswith("2017"):
    gribfiles.append(str(file))
gribfiles=sorted(gribfiles,key=lambda f:datetime.strptime(f.split('.')[-1],'%d%m%Y'))
print(gribfiles)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.11.2018, 20:41
Помогаю со студенческими работами здесь

Формирование списка файлов
День добрый! Существует такая иерархия: На диске С лежит папка In, в нее закидываются папки вида ФИО - ААА, ФИО - ВВВ, ФИО - С АА и...

Извлечение имён файлов из списка в файле
Имеется файл, содержащий полные пути к файлам (каждый путь на новой строчке). Как получить из него названия всех файлов без путей,...

Изменение списка имен файлов в qfiledialog
Можно ли как нибудь в QFileDialog получить доступ к полю Имя файла(на картинке обозначено стрелкой). Необходимо задать там захардкоженный...

Формирование списка файлов с последующей упаковкой в архив
Подскажите код для формирование списка файлов с последующей упаковкой в архив. Тип файлов не важен, например /txt. Возможно ли решать...

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


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru