El módulo pathlib de Python ofrece un método muy eficaz para interactuar con las rutas del sistema de archivos en este lenguaje de programación. Además de ser más fácil de usar, el código conciso del módulo es una gran ventaja.

¿Qué es Python pathlib?

En el popular lenguaje de programación Python, existen varios métodos para trabajar con rutas del sistema de archivos. Desde la versión 3.4, Python ofrece pathlib, por ejemplo, otra herramienta muy útil y completa para interactuar con rutas independientemente del sistema operativo.

El módulo es especialmente útil si no solo deseas leer o editar las rutas, sino también realizar tareas y pasos de trabajo adicionales. Entre otras cosas, permite crear y copiar ficheros individuales y sus componentes. Esto se simplifica sobre todo gracias a la interfaz superior de Python pathlib. El módulo forma parte de la biblioteca estándar y sustituye o combina otros numerosos métodos.

Representación de rutas orientada a objetos

Una de las grandes ventajas de pathlib es que el módulo permite a los usuarios representar rutas no como cadenas, sino orientadas a objetos en su lugar. Mientras que la forma anterior era a menudo engorrosa y requería varias sentencias incluso para tareas sencillas, la sintaxis del nuevo módulo ha sido significativamente simplificada. Como generalmente trabajarás con la clase path, deberías simplemente importarla antes de trabajar en un proyecto. Esto te permitirá crear un código más compacto más adelante. Para importar, utiliza el siguiente comando:

from pathlib import Path
python

Para crear una instancia de path, ya puedes utilizar pathlib de Python. Para ello es adecuado el siguiente código, en el que utilizamos los dos componentes “colores” y “azul.txt”. A continuación, se crea una nueva instancia con un simple comando:

from pathlib import Path 
blue = Path("colores", "azul.txt") 
print(azul)
python

El resultado sería, por ejemplo, el siguiente:

colores/azul.txt
python

Por lo tanto, Python coloca el separador del sistema operativo entre los dos componentes en la salida. Mientras que en nuestro ejemplo es una barra oblicua derecha /, la salida en un ordenador con Windows puede contener una barra invertida \ en su lugar. En Linux y macOS también se utiliza la barra oblicua derecha.

Llamada a directorios con pathlib de Python

Una vez que hayas importado path, puedes utilizar los diversos métodos de la clase con pathlib. Estos incluyen el acceso a ciertos directorios. Por ejemplo, si ejecutas el siguiente código, puedes llamar a tu directorio de trabajo actual:

from pathlib import Path 
Path.cwd()
python

Esto es importante, por ejemplo, si deseas abrir un archivo en el mismo directorio en el que se está ejecutando el script actual.

El acceso al directorio home del usuario actual también es posible con pathlib de Python. Es aconsejable seleccionar este directorio como punto de partida para poder trabajar con las rutas correspondientes en diferentes ordenadores si es necesario. El código adecuado es el siguiente:

from pathlib import Path 
Path.home()
python

Acceso mediante una cadena

En lugar de empezar con tu directorio de trabajo o personal, con pathlib es posible acceder a un archivo o directorio utilizando una cadena. El código correspondiente podría verse así:

from pathlib import Path 
Path(r"C:\Users\name\carpeta\archivo.txt")
python

La cadena se convierte en una ruta y, por tanto, puede utilizarse más fácilmente. La pequeña r delante de la cadena la identifica como un “raw string literal”. Esto garantiza que la barra invertida se utiliza realmente en esta función. De lo contrario, también puede utilizarse para identificar una variable no imprimible.

Conectar rutas o cadenas

Una forma adicional de crear una nueva ruta con pathliben Python es uniendo rutas o cadenas individuales. Para ello, tienes dos opciones.

Al utilizar una sola barra inclinada, puedes unir dos elementos en una nueva ruta. Un ejemplo de cómo hacerlo es el siguiente:

from pathlib import Path 
for file_path in Path.cwd().glob("*.txt"): 
nuevo_path = Path("ejemplo") / file_path.name 
file_path.rename(nuevo_path)
python

Alternativamente, puedes usar el método joinpath() para obtener el mismo resultado:

from pathlib import Path 
Path.home().joinpath("ejemplo", "subcarpeta", "archivo.py")
python

Utilizar componentes individuales

Si deseas descomponer una ruta en sus componentes y utilizarlos, pathlib también te ofrece las herramientas adecuadas para ello. Presentamos algunos ejemplos:

from pathlib import Path 
path = Path(r"C:\Users\name\carpeta\archivo.txt") 
path 
path.anchor 
path.name 
path.parent 
path.parent.parent 
path.stem 
path.suffix
python
  • .anchor: considera la parte anterior a los directorios propiamente dichos; esta puede variar según el sistema operativo
  • .name: considera solo el nombre del archivo sin referencia al directorio
  • .parent: considera el directorio donde se encuentra un archivo; si la ruta es un directorio, se utiliza el directorio superior
  • .stem: considera solo el nombre del archivo, sin la extensión
  • .suffix: considera únicamente la extensión del archivo

Los resultados correspondientes serían los siguientes:

'C:\\' 
'archivo.txt' 
WindowsPath('C:/Users/name/carpeta') 
WindowsPath('C:/Users/name') 
'archivo' 
'.txt'
python

Leer o escribir archivos

Aunque es posible escribir o leer archivos con otros métodos, con pathlib puedes simplificar considerablemente el código. Para ilustrar su funcionamiento, creamos una lista sencilla que contiene animales y plantas. Se vería así:

<!—blista_ejemplo.md -> 
# Lista Ejemplo 
 
## Animales 
* Perro 
* Gato 
* Ratón 
 
## Plantas 
* Rosa 
* Clavel
text

Ahora usamos la función estándar open() con pathlib para filtrar y mostrar todos los animales y plantas de la lista. El código correspondiente sería el siguiente:

from pathlib import Path 
path = Path.cwd() / "lista_ejemplo.md" 
with path.open(mode="r", encoding="utf-8") as md_file: 
content = md_file.read() 
resultado = [line for line in content.splitlines() if line.startswith("*")
python

Cambiar nombres de archivos

Para cambiar nombres de archivos, también se necesitan solo unas pocas líneas de código con pathlib. El módulo utiliza el método .with_name(), que permite ajustar el nombre y la extensión del archivo. El código correspondiente sigue este patrón:

from pathlib import Path 
md_path = Path("/Users/name/carpeta/azul.md") 
txt_path = md_path.with_name("rojo.txt") 
md_path.replace(txt_path)
python

Copiar archivos con pathlib

Aunque path en sí no tiene un método para copiar, puedes utilizar .with_stem()para duplicar un archivo. Esto crea un nuevo nombre de archivo sin cambiar la extensión. Aquí tienes un ejemplo:

from pathlib import Path 
source = Path("lista_ejemplo.md") 
destination = source.with_stem("nuevo_ejemplo") 
destination.write_bytes(source.read_bytes())
python

Mover archivos

Si quieres mover o eliminar archivos con pathlib, debes tener en cuenta que el sistema no realiza preguntas adicionales. Es decir, debes tener cuidado para no perder información importante. Con .replace(), puedes mover un archivo. Si ya existe un archivo con el mismo nombre en el destino, será sobrescrito. Aquí tienes una forma de comprobar previamente si es el caso. El código sería el siguiente:

from pathlib import Path 
source = Path("azul.py") 
destination = Path("rojo.py") 
if not destination.exists(): 
source.replace(destination)
python

Crear archivos vacíos

Para crear un archivo vacío con pathlib, escribe este código:

from pathlib import Path 
filename = Path("nuevo.txt") 
filename.exists() 
filename.touch() 
filename.exists() 
filename.touch()
python
Consejo

Consigue tus objetivos con GitHub. Deploy Now de IONOS te ofrece despliegues automatizados que puedes realizar en solo tres pasos. Siguiendo el principio “Push, build y deploy”, puedes implementar cambios más rápido. Te asesoramos sobre nuestras diferentes tarifas.

¿Le ha resultado útil este artículo?
Ir al menú principal