Pertanyaan Ekstrak ekstensi dari nama file dengan Python


Apakah ada fungsi untuk mengekstrak ekstensi dari nama file?


885
2018-02-12 14:11


asal


Jawaban:


Iya nih. Menggunakan os.path.splitext(Lihat Dokumentasi Python 2.X atau Dokumentasi Python 3.X):

>>> import os
>>> filename, file_extension = os.path.splitext('/path/to/somefile.ext')
>>> filename
'/path/to/somefile'
>>> file_extension
'.ext'

1408
2018-02-12 14:12



import os.path
extension = os.path.splitext(filename)[1]

308
2018-02-12 14:15



Baru di versi 3.4.

import pathlib

print(pathlib.Path('yourPathGoesHere').suffix)

Saya terkejut tidak ada yang menyebutkan pathlib namun, pathlib Mengagumkan!

Jika Anda membutuhkan semua sufiks (misalnya jika Anda memiliki .tar.gz), .suffixes akan mengembalikan daftar mereka!


93
2018-02-03 21:41



import os.path
extension = os.path.splitext(filename)[1][1:]

Untuk mendapatkan hanya teks ekstensi, tanpa titik.


77
2017-08-26 09:37



Satu opsi mungkin terpisah dari titik:

>>> filename = "example.jpeg"
>>> filename.split(".")[-1]
'jpeg'

Tidak ada kesalahan saat file tidak memiliki ekstensi:

>>> "filename".split(".")[-1]
'filename'

Tetapi Anda harus berhati-hati:

>>> "png".split(".")[-1]
'png'    # But file doesn't have an extension

54
2018-04-09 18:48



layak menambahkan lebih rendah di sana sehingga Anda tidak menemukan diri Anda bertanya-tanya mengapa JPG tidak muncul di daftar Anda.

os.path.splitext(filename)[1][1:].strip().lower()

26
2017-12-28 07:25



Salah satu solusi di atas berfungsi, tetapi di linux saya telah menemukan bahwa ada baris baru di akhir string ekstensi yang akan mencegah kecocokan berhasil. Tambahkan strip() metode sampai akhir. Sebagai contoh:

import os.path
extension = os.path.splitext(filename)[1][1:].strip() 

10
2017-10-10 22:48



Dengan splitext, ada masalah dengan file dengan ekstensi ganda (mis. file.tar.gz, file.tar.bz2, dll ..)

>>> fileName, fileExtension = os.path.splitext('/path/to/somefile.tar.gz')
>>> fileExtension 
'.gz'

tetapi seharusnya: .tar.gz

Solusi yang memungkinkan adalah sini


9
2018-02-05 00:19



filename='ext.tar.gz'
extension = filename[filename.rfind('.'):]

7
2018-02-18 10:55