Уведомления

Группа в Telegram: @pythonsu

#1 Март 8, 2012 21:15:05

asdf
От:
Зарегистрирован: 2012-02-12
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод glob.glob()

Мне нужно получить имена видео файлов в текущем каталоге. Сделал вот так:

vid_name = glob.glob('*[.avi,.amv,.divx,.flc,.flv,.mkv,.mp2v,.mp4,.mp4v,.mpeg,.rmd,.swf,.vc1,.wm,.wmv,.xvid]')
Вместе с именами видео файлов вывелись файлы с сабами *.ass. Как такое может быть?
Может есть какой-то более нормальный способ отличить сабы от видео чем такой вот перебор?



Офлайн

#2 Март 9, 2012 08:08:55

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Вывод glob.glob()

квадратные скобки работают по-другому



Офлайн

#3 Март 9, 2012 08:21:46

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Вывод glob.glob()

В вашем случае вероятно нужно сперва получить весь список файлов,а потом регулярными выражениями отсортировать нужное.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#4 Март 10, 2012 19:26:42

asdf
От:
Зарегистрирован: 2012-02-12
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод glob.glob()

JOHN_16
Так и сделал, получил список всех имен os.listdir('.'). Затем использовал in чтобы узнать расширение.
Всем спасибо.



Отредактировано (Март 10, 2012 19:27:06)

Офлайн

#5 Март 10, 2012 23:51:36

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Вывод glob.glob()

asdf
предостерегаю вас от ошибки, если вы делаете что то типа:

if '.avi' in 'some_film.avi'
то все хорошо, но а если получится так:
if '.avi' in 'some_file.avi.zip'
во первых это не видео файл
во вторых не факт что если это архив то внутри него видео файл. Это всего лишь имя файла, оно может никак не отображать содержание файла.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#6 Март 11, 2012 02:25:29

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Вывод glob.glob()

>>> 'some_file.avi'.endswith(('.avi', '.amv', '.divx'))
True
>>> 'some_file.mp3'.endswith(('.avi', '.amv', '.divx'))
False
>>> import os.path
>>> os.path.splitext('some_file.avi')
('some_file', '.avi')
>>> os.path.splitext('some_file.avi.zip')
('some_file.avi', '.zip')
>>>



Офлайн

#7 Март 11, 2012 09:42:40

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Вывод glob.glob()

py.user.next
Ну что вы так сразу?:) человек может подумать хотел, справку почитать, а вы ему шансов не оставили:)



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#8 Март 12, 2012 23:46:14

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Вывод glob.glob()

так на чтение уйдёт не меньше месяца



Офлайн

#9 Март 13, 2012 03:11:21

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Вывод glob.glob()

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



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано (Март 13, 2012 03:13:50)

Офлайн

#10 Март 13, 2012 07:50:30

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Вывод glob.glob()

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



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version