Módulos OS o módulo Pathlib?



@eduardo_gpg

Número de visitas 341

Tiempo de lectura 2 min

16 Febrero 2023

Regularmente, siempre que hablamos acerca del trabajo con directorios en Python, el módulo OS sale a relucir. 👹

Y no es de extrañarse, este módulo, entra otras cosas, nos permite manipular directorios del sistema operativo de una forma relativamente sencilla, haciendo uso de Strings.

Sin bien es cierto, este módulo funciona bastante bien, cientos de miles de aplicaciones se han creado con este módulo, la verdad es que trabajar las rutas del sistema mediante Strings en ocasiones pude tornarse algo complicado. 😳

Por ejemplo, utilizando os, conozcamos si la ruta de descargas existe en el sistema.

Para ello el código pudiese quedar de la siguiente manera.

import os

>>> os.path.exists("/users/pywombat/documents/downloads")
False

Esto funciona, así que ahora modifiquemos un poco nuestro script; hagamos que, si el directorio no existe, el módulo os proceda a crearlo.

import os

if not os.path.exists("/users/pywombat/downloads"):
    os.mkdir("/users/pywombat/downloads")

En este caso, al trabajar con Strings, todas las funciones que ejecutemos de os serán completamente independientes unas de otras, y estas carecerán del contexto para conocer sobre en qué ruta se esta trabajando, por lo tanto, si vamos a realizar múltiples operaciones sobre un mismo directorio, es necesario pasar el mismo argumento para todas las funciones, lo cual puede ser algo tedioso. 😱

Si bien este problema se puede solventar con alguna variable, creo que no es la solución más optima para atacar dicho problema.

Además de ello, es importante mencionar que, con os, no tenemos el acceso a la metada data de los directorios, meta metada como el nombre del directorio, extensión, sub directorios, directorios padres etc…

A afortunadamente para nosotros, en versiones recientes del lenguaje, se añade el módulo pathlib a la biblioteca estándar de Python, módulo que, al igual que os , nos permite trabajar con directorios del sistema, solo que en esta ocasión a través de clases y objetos. 🍃

Estos no viene bastante bien, ya que en una misma instancia podemos realizar múltiple cantidad de operaciones sobre un mismo directorio.

Por ejemplo, repliquemos el crear el directorio descargas pero ahora con Pathlib.

from pathlib import Path

path = Path("/users/pywombat/documents/downloads")

if not path.exists():
    path.mkdir()

Como podemos observar solo es necesario instanciar nuestra ruta y con el mismo objeto ya podemos realizar múltiples operaciones. 🥳

Además de ello, con Pathlib sí podemos acceder a la meta data de los directorios.

Veamos un par de ejemplos.

>>> path = Path('/home/eduardo/projects/main.py')

>>> path.name
'main.py'

>>> path.stem
'main'

>>> path.suffix
'.py'

>>> path.parent
PosixPath('/home/eduardo/projects')

>>> path.parent.name
'projects'

>>> path.anchor
'/'

Conclusión

En conclusión, si bien es cierto que con el módulo os sí podemos trabajar con directorios en Python, la verdad es que al apoyarnos de Strings, la cantidad de cosas que podemos realizar son limitadas, además, si queremos realizar múltiples operaciones sobre un mismo directorio siempre será necesario hacerle saber a las funciones sobre de que directorio estamos hablando.

Por lo tanto, para agilizar nuestro proceso de desarrollo y que nuestro código sea mucho más legible, yo te recomiendo utilizar el módulo pathlib sobre os.


¿El contenido te resulto de ayuda?

Para poder dejar tu opinión es necesario ser un usuario autenticado. Login

Más Tips y Ejercicios 🐍

Adquiere una subscripción PyWombat por tan solo $3 USD. al mes.

Conoce los beneficios de ser usuario premium:
Niveles desbloqueados: Ten accesos a todos los niveles de ejercicios. 🔓
Nuevo límite: Incrementa tu límite de ejercicios por semana. 🚀
Contenido único: Recibe semanalmente recursos exclusivos de Python (Videos, Artículos y Capitulos del libro PyWombat, comienza como desarrollador Python. 🐍