Obtener la extensión del archivo en Python

Rayven Esplanada 30 enero 2023
  1. Utiliza el módulo os.path para extraer la extensión del archivo en Python
  2. Usa el módulo pathlib para extraer la extensión del archivo en Python
Obtener la extensión del archivo en Python

Este tutorial introduce cómo obtener la extensión del archivo a partir del nombre de archivo en Python.

Utiliza el módulo os.path para extraer la extensión del archivo en Python

Python tiene un módulo os.path que tiene funciones de utilidad preestablecidas para manipular las rutas de los archivos del sistema operativo. Incluye abrir, guardar y actualizar, y obtener la información de las rutas de los archivos.

Usaremos este módulo para obtener la extensión del archivo en Python.

os.path tiene una función splitext() para dividir la raíz y la extensión del camino de archivo dado. La función devuelve una tupla que contiene la cadena de la raíz y la cadena de la extensión.

Proporcionemos un ejemplo de ruta de archivo con una extensión docx.

/Users/user/Documents/sampledoc.docx

La salida esperada debería ser la extensión .docx.

Declare dos variables separadas para obtener el resultado de splitext() llamado extension y root.

import os

path = "/Users/user/Documents/sampledoc.docx"
root, extension = os.path.splitext(path)

print("Root:", root)
print("extension:", extension)

Resultado:

Root: /Users/user/Documents/sampledoc
Extension: .docx

La extensión ha sido devuelta con éxito a ted desde la ruta del archivo raíz.

Usa el módulo pathlib para extraer la extensión del archivo en Python

pathlib es un módulo de Python que contiene clases que representan rutas de archivos e implementa funciones y constantes de utilidad para estas clases.

pathlib.Path() acepta una cadena de rutas como argumento y devuelve un nuevo objeto Path.

El objeto pathlib.Path tiene el atributo suffix que devuelve la información de la extensión del archivo.

import pathlib

path = pathlib.Path("/Users/user/Documents/sampledoc.docx")

print("Parent:", path.parent)
print("Filename:", path.name)
print("Extension:", path.suffix)

Aparte de la raíz, también podemos obtener la ruta del archivo padre y el nombre real del archivo de la ruta dada, simplemente llamando a los atributos parent y name dentro del objeto Path.

Resultado:

Parent: /Users/user/Documents
Filename: sampledoc.docx
Extension: .docx

¿Qué pasa si tenemos una extensión de archivo como .tar.gz o .tar.bz2?

pathlib también proporciona un atributo para archivos con múltiples sufijos como extensiones. El atributo suffixes dentro del objeto Path es una lista que contiene todos los sufijos del archivo dado. Si usamos el ejemplo anterior e imprimimos el atributo suffixes:

import pathlib

path = pathlib.Path("/Users/user/Documents/sampledoc.docx")

print("Suffix(es):", path.suffixes)

Resultado:

Suffix(es): ['.docx']

Entonces, incluso si sólo hay un sufijo, la salida resultará en una lista de un solo botón.

Ahora prueba un ejemplo con una extensión .tar.gz. Para convertir la lista en una sola cadena, la función join() puede usarse en una cadena vacía y aceptar el atributo suffixes como argumento.

import pathlib

path = pathlib.Path("/Users/user/Documents/app_sample.tar.gz")

print("Parent:", path.parent)
print("Filename:", path.name)
print("Extension:", "".join(path.suffixes))

Resultado:

Parent: /Users/user/Documents
Filename: app_sample.tar.gz
Extension: .tar.gz

Ahora se muestra la extensión real en lugar de una lista.

En resumen, los dos módulos os y pathlib proveen métodos convenientes para obtener la extensión del archivo de una ruta de archivo en Python.

El módulo os tiene la función splitext para separar la raíz y el nombre del archivo de la extensión del mismo. pathlib crea un objeto Path y simplemente almacena la extensión dentro del atributo suffixes.

Si estás anticipando más de una extensión en un archivo, sería mejor usar pathlib ya que provee un fácil soporte para múltiples extensiones usando el atributo suffixes.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Artículo relacionado - Python File