Python Obtener un nombre de archivo sin extensión de la ruta

Muhammad Waiz Khan 10 octubre 2023
  1. Obtener el nombre del archivo sin la extensión de la ruta usando el método pathlib.path().stem en Python
  2. Obtener el nombre del archivo sin la extensión de la ruta usando los métodos os.path.splitext() y string.split() en Python
  3. Obtener el nombre del archivo de la ruta usando los métodos os.path.basename() y os.path.splitext() en Python
Python Obtener un nombre de archivo sin extensión de la ruta

Este tutorial demostrará varios métodos para obtener el nombre de un archivo sin extensión a partir de la ruta de un archivo en Python. Supongamos que el objetivo es obtener el nombre de los archivos de la lista de rutas de archivos disponibles en forma de cadena, como por ejemplo de la ruta Desktop/folder/myfile.txt, obtenemos sólo el nombre del archivo myfile sin la extensión .txt.

Obtener el nombre del archivo sin la extensión de la ruta usando el método pathlib.path().stem en Python

El método path().stem toma la ruta del archivo como entrada y devuelve el nombre del archivo extrayéndolo de la ruta del archivo. Por ejemplo, desde la ruta Desktop/folder/myfile.txt, devolverá myfile sin la extensión .txt.

El siguiente ejemplo de código demuestra cómo utilizar el path().stem para obtener el nombre del archivo sin la extensión del mismo a partir de la ruta del archivo:

from pathlib import Path

file_path = "Desktop/folder/myfile.txt"
file_name = Path(file_path).stem
print(file_name)

Producción :

myfile

Obtener el nombre del archivo sin la extensión de la ruta usando los métodos os.path.splitext() y string.split() en Python

El método path.splitext() del módulo os toma la ruta del archivo como entrada de cadena y devuelve la ruta y la extensión del archivo como salida.

Como queremos obtener el nombre del archivo a partir de la ruta del mismo, podemos eliminar primero la extensión del archivo utilizando el método os.path.splitext(). El primer elemento del resultado de la división es la ruta del archivo sin la extensión. Este resultado se divide aún más utilizando / como separador. El último elemento será el nombre del archivo sin extensión. El siguiente ejemplo de código demuestra cómo obtener el nombre del archivo sin extensión a partir de la ruta de acceso utilizando los métodos path.splitext() y string.split().

import os

file_path = "Desktop/folder/myfile.txt"

file_path = os.path.splitext(file_path)[0]
file_name = file_path.split("/")[-1]
print(file_name)

Producción :

test

Obtener el nombre del archivo de la ruta usando los métodos os.path.basename() y os.path.splitext() en Python

En Python el método path.basename() del módulo os toma la ruta del archivo como entrada y devuelve el nombre base extraído de la ruta del archivo. Por ejemplo, el nombre base de Desktop/folder/myfile.txt es myfile.txt.

Como queremos obtener el nombre del archivo a partir de la ruta, el nombre base puede ser extraído usando el método path.basename() y el nombre del archivo usando path.splitext(). El siguiente ejemplo de código demuestra cómo obtener el nombre del archivo de la ruta utilizando los métodos path.basename() y path.splitext().

import os

file_path = "Desktop/folder/myfile.txt"

basename = os.path.basename(file_path)
file_name = os.path.splitext(basename)[0]
print(file_name)

Producción :

myfile
Advertencia
En caso de que el archivo tenga un nombre como myfile.tar.gz, todos los métodos explicados anteriormente devolverán myfile.tar como nombre de archivo.

Supongamos que necesitamos obtener el nombre del fichero sin la parte que va después de . como myfile en lugar de myfile.tar de la ruta Escritorio/carpeta/myfile.tar.gz, el método string.index() puede utilizarse para extraer sólo myfile de myfile.tar. Pero el inconveniente de este método es que si el . es parte del nombre del archivo como my.file.tar.gz, devolverá my como nombre del archivo.

En el siguiente ejemplo de código podemos utilizar string.index() para eliminar .tar de la salida myfile.tar de los métodos explicados anteriormente:

file_name = "myfile.tar"
index = file_name.index(".")
file_name = file_name[:index]
print(file_name)

file_name = "my.file.tar"
index = file_name.index(".")
file_name = file_name[:index]
print(file_name)

Producción :

myfile
my

Artículo relacionado - Python File