Estou trabalhando em um determinado programa em que preciso fazer coisas diferentes, dependendo da extensão do arquivo. Eu poderia apenas usar isso?
if m == *.mp3
...
elif m == *.flac
...
python
file-extension
wkoomson
fonte
fonte
Respostas:
Supondo que
m
seja uma string, você pode usarendswith
:Para fazer distinção entre maiúsculas e minúsculas e eliminar uma cadeia potencialmente grande de outra coisa se:
fonte
.split('.')[-1]
? Ou a partição é realmente alta eficiência?os.path
fornece muitas funções para manipular caminhos / nomes de arquivos. ( docs )os.path.splitext
segue um caminho e divide a extensão do arquivo do final.Dá:
fonte
/.mp3
não é considerado um arquivo mp3. Esta é, no entanto, a maneira como um espaço principal deve ser tratado. Eg.gitignore
não é um formato de arquivoUse a
pathlib
partir do Python3.4 em diante.fonte
Veja o módulo fnmatch. Isso fará o que você está tentando fazer.
fonte
uma maneira fácil poderia ser:
os.path.splitext(file)
retornará uma tupla com dois valores (o nome do arquivo sem extensão + apenas a extensão). O segundo índice ([1]) fornecerá apenas a extensão. O legal é que, dessa maneira, você também pode acessar o nome do arquivo com bastante facilidade, se necessário!fonte
ou talvez:
fonte
Um tópico antigo, mas pode ajudar futuros leitores ...
Eu evitaria o uso de .lower () nos nomes de arquivos se por outro motivo não fosse tornar seu código mais independente da plataforma. (linux faz distinção entre maiúsculas e minúsculas, .lower () em um nome de arquivo certamente corromperá sua lógica eventualmente ... ou pior, um arquivo importante!)
Por que não usar re ? (Embora seja ainda mais robusto, você deve verificar o cabeçalho do arquivo mágico de cada arquivo ... Como verificar o tipo de arquivo sem extensões em python? )
Resultado:
fonte
fonte
fonte
.
s, por exemplosome.test.file.mp3
fonte
fonte