Форум сайта python.su
0
Здравствуйте. Недавно у меня появилась такая идея.
Сделать программу, которая читает файл с любимыми треками из lastfm. Потом ищет эти треки на жестком диске и создает автоматом плейлист AIMP. Где все пути к файлам уже прописаны и можно слушать. Звучит, как что то бесполезное, но мне не хватает такой проги)
Прохожу по папке с файлами. Если файл mp3,то читаю его и засовываю в модуль для работы с ID3, чтоб он вытащил имя трека и артиста.
path = (os.path.join(root,f)) song = ID3(path) if (song.title == title) and (song.artist == artist): return path
Офлайн
-2
Для начала хорошо бы показать, откуда берется f и root и какой у них тип.
Офлайн
-2
Питоноотсос: os.walk() возвращает str. Шел 2012 год, и даже линупсы перешли наконец-то на юникод, а питон все никак осилить не может.
Офлайн
52
asilyator
Питоноотсос: os.walk() возвращает str. Шел 2012 год, и даже линупсы перешли наконец-то на юникод, а питон все никак осилить не может.
Офлайн
-2
fata1exТам букв многа, что сказать хотел? Да и 2.х выкинуть прикажете?
What’s New In Python 3.0
Отредактировано asilyator (Май 21, 2012 00:06:05)
Офлайн
173
asilyatorА может стоит сначала документацию осилить?
Питоноотсос: os.walk() возвращает str. Шел 2012 год, и даже линупсы перешли наконец-то на юникод, а питон все никак осилить не может.
Офлайн
0
Python использую 2.7
Вот полностью функция (os.walk тоже используется)
def findfiles(title,artist): for root, dirs, files in os.walk('H:\Music\Mantus'): for f in files: if '.mp3' in f: path = (os.path.join(root,f)) print path song = ID3(path) if (song.title == title) and (song.artist == artist): return path
Офлайн
173
Tim32, попробуйте передавать в os.walk и остальные функции работы с путями Юникод, т.е. вместо:
os.walk('H:\Music\Mantus')
os.walk(u'H:\Music\Mantus')
os.walk(ur'H:\Music\Mantus')
Офлайн
-2
reclosedev1. Возвращать ascii пути в зависимости от типа пути - это пушка. При том, что единственная ОС, которую я знаю, которая не поддерживает юникод в ФС - мертвая win9x.
А может стоит сначала документацию осилить?
Отредактировано asilyator (Май 21, 2012 13:46:48)
Офлайн
173
asilyatorКакая-то логика в этом есть, не все программы поддерживают юникод, + обратная совместимость с <2.3. И кстати не в ascii, а в той, которую вернет sys.getfilesystemencoding(), в случае с Win - это mbcs.
1. Возвращать ascii пути в зависимости от типа пути - это пушка.
При том, что единственная ОС, которую я знаю, которая не поддерживает юникод в ФС - мертвая win9x.Есть еще Symbian и прочий Embeded
asilyatorВот здесь: os.listdir
2. А не подскажешь ли, где же в документации этот нюанс указан? Может ты ее как-то по особенному осилил?
asilyatorFile Names, Command Line Arguments, and Environment Variables
В тройке этот прикол сохранен, или там по уму сделали?
Офлайн