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ż .bashrcpoprawną 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