Se ho un nome di file come uno di questi:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Come posso ottenere solo il nome del file, senza l'estensione? Una regex sarebbe appropriata?
Se ho un nome di file come uno di questi:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
Come posso ottenere solo il nome del file, senza l'estensione? Una regex sarebbe appropriata?
Risposte:
Nella maggior parte dei casi, non dovresti usare una regex per questo.
os.path.splitext(filename)[0]
Questo gestirà anche .bashrccorrettamente un nome di file mantenendo l'intero nome.
basename[:-len(".tar.gz")]per questo.
git-1.7.8.tar. Non c'è modo di indovinare correttamente quanti punti il chiamante vuole rimuovere, quindi splitext()rimuove solo l'ultimo. Se vuoi gestire casi limite .tar.gz, dovrai farlo a mano. Ovviamente, non puoi rimuovere tutti i punti, poiché finirai con git-1.
>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')
Se dovessi farlo con una regex, lo farei in questo modo:
s = re.sub(r'\.jpg$', '', s)
È possibile utilizzare il metodo stem per ottenere il nome del file.
Ecco un esempio:
from pathlib import Path
p = Path(r"\\some_directory\subdirectory\my_file.txt")
print(p.stem)
# my_file