Si tengo un nombre de archivo como uno de estos:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
¿Cómo puedo obtener solo el nombre del archivo, sin la extensión? ¿Sería apropiado un regex?
Si tengo un nombre de archivo como uno de estos:
1.1.1.1.1.jpg
1.1.jpg
1.jpg
¿Cómo puedo obtener solo el nombre del archivo, sin la extensión? ¿Sería apropiado un regex?
Respuestas:
En la mayoría de los casos, no debe usar una expresión regular para eso.
os.path.splitext(filename)[0]
Esto también manejará .bashrccorrectamente un nombre de archivo como manteniendo el nombre completo.
basename[:-len(".tar.gz")]para esto.
git-1.7.8.tar. No hay forma de adivinar correctamente cuántos puntos quiere quitar la persona que llama, por lo que splitext()solo quita el último. Si desea manejar casos de borde como .tar.gz, tendrá que hacerlo a mano. Obviamente, no puedes quitar todos los puntos, ya que terminarás con git-1.
>>> import os
>>> os.path.splitext("1.1.1.1.1.jpg")
('1.1.1.1.1', '.jpg')
Si tuviera que hacer esto con una expresión regular, lo haría así:
s = re.sub(r'\.jpg$', '', s)
Puede usar el método de la raíz para obtener el nombre del archivo.
Aquí hay un ejemplo:
from pathlib import Path
p = Path(r"\\some_directory\subdirectory\my_file.txt")
print(p.stem)
# my_file