Python'da Uzantı Olmadan Dosya Adını Alın


Yanıtlar:


203

Çoğu durumda, bunun için bir normal ifade kullanmamalısınız.

os.path.splitext(filename)[0]

Bu aynı zamanda .bashrctam adı koruyarak bir dosya adını doğru şekilde işleyecektir .


4
"Git-1.7.8.tar.gz" ile düzgün çalışmaz, sadece ".gz" yi kaldırır. Bunun için kullanıyorum basename[:-len(".tar.gz")].
blueyed

28
@blueyed: "Düzgün çalışmıyor" bir bakış açısı meselesi. Dosya olan taban adıdır olan bir gzip dosya, git-1.7.8.tar. Arayanın kaç noktayı çıkarmak istediğini doğru bir şekilde tahmin etmenin bir yolu yoktur, bu nedenle splitext()yalnızca sonuncuyu çıkarır. Bu gibi uç durumları halletmek istiyorsanız .tar.gz, bunu elle yapmanız gerekir. Açıkçası, tüm noktaları kaldıramazsınız, çünkü sonunuz olacak git-1.
Marcelo Cantos


10

Bunu bir normal ifadeyle yapmak zorunda olsaydım, şöyle yapardım:

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

7

Dosya adını almak için stem yöntemini kullanabilirsiniz .

İşte bir örnek:

from pathlib import Path

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

6

Normal ifadeye gerek yok. os.path.splitextsenin arkadaşın:

os.path.splitext('1.1.1.jpg')
>>> ('1.1.1', '.jpg')
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.