Jeśli mam nazwę pliku podobną do jednej z tych:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Jak mogę uzyskać tylko nazwę pliku bez rozszerzenia? Czy wyrażenie regularne byłoby odpowiednie?
Jeśli mam nazwę pliku podobną do jednej z tych:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Jak mogę uzyskać tylko nazwę pliku bez rozszerzenia? Czy wyrażenie regularne byłoby odpowiednie?
Odpowiedzi:
W większości przypadków nie powinieneś do tego używać wyrażenia regularnego.
os.path.splitext(filename)[0]
Spowoduje to również .bashrc
poprawną obsługę nazwy pliku , zachowując całą nazwę.
basename[:-len(".tar.gz")]
do tego.
git-1.7.8.tar
. Nie ma sposobu, aby poprawnie odgadnąć, ile kropek dzwoniący chce usunąć, więc splitext()
usuwa tylko ostatnią. Jeśli chcesz obsługiwać przypadki krawędziowe .tar.gz
, musisz to zrobić ręcznie. Oczywiście nie możesz usunąć wszystkich kropek, ponieważ skończysz git-1
.
>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')
Gdybym miał to zrobić za pomocą wyrażenia regularnego, zrobiłbym to tak:
s = re.sub(r'\.jpg$', '', s)
Możesz użyć metody macierzystej , aby uzyskać nazwę pliku.
Oto przykład:
from pathlib import Path
p = Path(r"\\some_directory\subdirectory\my_file.txt")
print(p.stem)
# my_file