Se eu tiver um nome de arquivo como um destes:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Como posso obter apenas o nome do arquivo, sem a extensão? Uma regex seria apropriada?
Se eu tiver um nome de arquivo como um destes:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Como posso obter apenas o nome do arquivo, sem a extensão? Uma regex seria apropriada?
Respostas:
Na maioria dos casos, você não deve usar um regex para isso.
os.path.splitext(filename)[0]
Isso também tratará um nome de arquivo .bashrccorretamente, mantendo o nome completo.
basename[:-len(".tar.gz")]para isso.
git-1.7.8.tar. Não há como adivinhar corretamente quantos pontos o chamador deseja remover, então splitext()apenas remove o último. Se quiser lidar com casos extremos .tar.gz, você terá que fazer isso manualmente. Obviamente, você não pode retirar todos os pontos, pois acabará com git-1.
>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')
Se eu tivesse que fazer isso com uma regex, faria assim:
s = re.sub(r'\.jpg$', '', s)
Você pode usar o método stem para obter o nome do arquivo.
Aqui está um exemplo:
from pathlib import Path
p = Path(r"\\some_directory\subdirectory\my_file.txt")
print(p.stem)
# my_file