Jika saya memiliki nama file seperti ini:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Bagaimana saya bisa mendapatkan hanya nama file, tanpa ekstensi? Apakah ekspresi reguler sesuai?
Jika saya memiliki nama file seperti ini:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Bagaimana saya bisa mendapatkan hanya nama file, tanpa ekstensi? Apakah ekspresi reguler sesuai?
Jawaban:
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.
basename[:-len(".tar.gz")]untuk ini.
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.
>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')
Jika saya harus melakukan ini dengan regex, saya akan melakukannya seperti ini:
s = re.sub(r'\.jpg$', '', s)
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