Saya sedang mengerjakan program tertentu di mana saya perlu melakukan berbagai hal tergantung pada ekstensi file. Bisakah saya menggunakan ini?
if m == *.mp3
...
elif m == *.flac
...
python
file-extension
wkoomson
sumber
sumber
Jawaban:
Dengan asumsi
m
string, Anda dapat menggunakanendswith
:Menjadi case-insensitive, dan untuk menghilangkan rantai besar lain-jika:
sumber
.split('.')[-1]
? Atau rpartition benar-benar efisiensi yang tinggi?os.path
menyediakan banyak fungsi untuk memanipulasi path / nama file. ( dok )os.path.splitext
mengambil jalur dan memisahkan ekstensi file dari ujungnya.Memberi:
sumber
/.mp3
tidak dianggap sebagai file mp3. Namun ini adalah cara ruang terkemuka harus diperlakukan. Misalnya.gitignore
bukan format fileGunakan
pathlib
Dari Python3.4 dan seterusnya.sumber
Lihatlah modul fnmatch. Itu akan melakukan apa yang Anda coba lakukan.
sumber
salah satu cara mudah bisa:
os.path.splitext(file)
akan mengembalikan tuple dengan dua nilai (nama file tanpa ekstensi + hanya ekstensi). Indeks kedua ([1]) akan memberikan Anda hanya ekstensi. Yang keren adalah, dengan cara ini Anda juga dapat mengakses nama file dengan cukup mudah, jika perlu!sumber
atau mungkin:
sumber
Utas lama, tetapi dapat membantu pembaca di masa mendatang ...
Saya akan menghindari penggunaan .lower () pada nama file jika tanpa alasan lain selain membuat kode Anda lebih mandiri. (linux adalah kasus sensistive, .lower () pada nama file pasti akan korup logika Anda akhirnya ... atau lebih buruk, file penting!)
Mengapa tidak menggunakan ulang ? (Meskipun untuk menjadi lebih kuat, Anda harus memeriksa header file ajaib dari setiap file ... Bagaimana memeriksa jenis file tanpa ekstensi dalam python? )
Keluaran:
sumber
sumber
sumber
.
, misalnyasome.test.file.mp3
sumber
sumber