Я работаю над определенной программой, где мне нужно делать разные вещи в зависимости от расширения файла. Могу ли я просто использовать это?
if m == *.mp3
...
elif m == *.flac
...
python
file-extension
wkoomson
источник
источник
Ответы:
Предполагая,
m
что это строка, вы можете использоватьendswith
:Чтобы не учитывать регистр и исключить потенциально большую цепочку в другом случае:
источник
.split('.')[-1]
? Или rpartition действительно высокая эффективность?os.path
предоставляет множество функций для манипулирования путями / именами файлов. ( документы )os.path.splitext
берет путь и разбивает расширение файла с конца.дает:
источник
/.mp3
не считается mp3-файлом. Это, однако, способ обработки ведущего пространства. Например,.gitignore
это не формат файлаИспользуйте
pathlib
начиная с Python3.4.источник
Посмотрите на модуль fnmatch. Это будет делать то, что вы пытаетесь сделать.
источник
Один простой способ может быть:
os.path.splitext(file)
вернет кортеж с двумя значениями (имя файла без расширения + только расширение). Таким образом, второй индекс ([1]) даст вам только расширение. Круто то, что таким образом вы также можете легко получить доступ к имени файла, если это необходимо!источник
или возможно:
источник
Старая ветка, но может помочь будущим читателям ...
Я бы не использовал .lower () в именах файлов, если бы только для того, чтобы сделать ваш код более независимым от платформы. (Linux является случай sensistive, .lower () на имя файла, безусловно , испортит вашу логику в конце концов ... или еще хуже, важный файл!)
Почему бы не использовать ре ? (Хотя чтобы быть еще более надежным, вы должны проверить магический заголовок каждого файла ... Как проверить тип файлов без расширений в python? )
Вывод:
источник
источник
источник
.
s, напримерsome.test.file.mp3
источник
источник