Dapatkan Nama File Tanpa Ekstensi dengan Python


Jawaban:


203

Dalam kebanyakan kasus, Anda tidak boleh menggunakan regex untuk itu.

os.path.splitext(filename)[0]

Ini juga akan menangani nama file seperti .bashrcbenar dengan menyimpan seluruh nama.


4
Tidak bekerja dengan baik dengan "git-1.7.8.tar.gz", yang hanya menghapus ".gz". Saya gunakan basename[:-len(".tar.gz")]untuk ini.
biru

28
@blueyed: "Tidak berfungsi dengan baik" adalah masalah perspektif. File tersebut adalah file gzip, dengan nama dasarnya git-1.7.8.tar. Tidak ada cara untuk menebak dengan tepat berapa banyak titik yang ingin dihapus oleh pemanggil, jadi splitext()hanya hapus yang terakhir. Jika Anda ingin menangani kasus tepi seperti .tar.gz, Anda harus melakukannya dengan tangan. Jelas, Anda tidak dapat menghapus semua titik, karena Anda akan berakhir dengan git-1.
Marcelo Cantos


10

Jika saya harus melakukan ini dengan regex, saya akan melakukannya seperti ini:

s = re.sub(r'\.jpg$', '', s)

7

Anda dapat menggunakan metode batang untuk mendapatkan nama file.

Berikut ini contohnya:

from pathlib import Path

p = Path(r"\\some_directory\subdirectory\my_file.txt")
print(p.stem)
# my_file

6

Tidak perlu regex. os.path.splitextapakah temanmu:

os.path.splitext('1.1.1.jpg')
>>> ('1.1.1', '.jpg')
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.