El módulo pathlib de Python ofrece un método muy eficaz para in­ter­ac­tuar con las rutas del sistema de archivos en este lenguaje de pro­gra­ma­ció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 pro­gra­ma­ció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 he­rra­mie­n­ta muy útil y completa para in­ter­ac­tuar con rutas in­de­pe­n­die­n­te­me­n­te del sistema operativo.

El módulo es es­pe­cia­l­me­n­te útil si no solo deseas leer o editar las rutas, sino también realizar tareas y pasos de trabajo adi­cio­na­les. Entre otras cosas, permite crear y copiar ficheros in­di­vi­dua­les y sus co­m­po­ne­n­tes. Esto se si­m­pli­fi­ca sobre todo gracias a la interfaz superior de Python pathlib. El módulo forma parte de la bi­blio­te­ca estándar y sustituye o combina otros numerosos métodos.

Re­pre­se­n­ta­ción de rutas orientada a objetos

Una de las grandes ventajas de pathlib es que el módulo permite a los usuarios re­pre­se­n­tar rutas no como cadenas, sino orie­n­ta­das a objetos en su lugar. Mientras que la forma anterior era a menudo engorrosa y requería varias se­n­te­n­cias incluso para tareas sencillas, la sintaxis del nuevo módulo ha sido si­g­ni­fi­ca­ti­va­me­n­te si­m­pli­fi­ca­da. Como ge­ne­ra­l­me­n­te tra­ba­ja­rás con la clase path, deberías si­m­ple­me­n­te im­po­r­tar­la 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 uti­li­za­mos los dos co­m­po­ne­n­tes “colores” y “azul.txt”. A co­n­ti­nua­ció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 co­m­po­ne­n­tes 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 di­re­c­to­rios 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 di­re­c­to­rios. Por ejemplo, si ejecutas el siguiente código, puedes llamar a tu di­re­c­to­rio de trabajo actual:

from pathlib import Path 
Path.cwd()
python

Esto es im­po­r­ta­n­te, por ejemplo, si deseas abrir un archivo en el mismo di­re­c­to­rio en el que se está eje­cu­ta­n­do el script actual.

El acceso al di­re­c­to­rio home del usuario actual también es posible con pathlib de Python. Es aco­n­se­ja­ble se­le­c­cio­nar este di­re­c­to­rio como punto de partida para poder trabajar con las rutas co­rre­s­po­n­die­n­tes en di­fe­re­n­tes or­de­na­do­res 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 di­re­c­to­rio de trabajo o personal, con pathlib es posible acceder a un archivo o di­re­c­to­rio uti­li­za­n­do una cadena. El código co­rre­s­po­n­die­n­te 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 uti­li­zar­se más fá­ci­l­me­n­te. La pequeña r delante de la cadena la ide­n­ti­fi­ca como un “raw string literal”. Esto garantiza que la barra invertida se utiliza realmente en esta función. De lo contrario, también puede uti­li­zar­se para ide­n­ti­fi­car una variable no im­pri­mi­ble.

Conectar rutas o cadenas

Una forma adicional de crear una nueva ruta con pathliben Python es uniendo rutas o cadenas in­di­vi­dua­les. 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

Al­te­r­na­ti­va­me­n­te, puedes usar el método joinpath() para obtener el mismo resultado:

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

Utilizar co­m­po­ne­n­tes in­di­vi­dua­les

Si deseas de­s­co­m­po­ner una ruta en sus co­m­po­ne­n­tes y uti­li­zar­los, pathlib también te ofrece las he­rra­mie­n­tas adecuadas para ello. Pre­se­n­ta­mos 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 di­re­c­to­rios pro­pia­me­n­te dichos; esta puede variar según el sistema operativo
  • .name: considera solo el nombre del archivo sin re­fe­re­n­cia al di­re­c­to­rio
  • .parent: considera el di­re­c­to­rio donde se encuentra un archivo; si la ruta es un di­re­c­to­rio, se utiliza el di­re­c­to­rio superior
  • .stem: considera solo el nombre del archivo, sin la extensión
  • .suffix: considera úni­ca­me­n­te la extensión del archivo

Los re­su­l­ta­dos co­rre­s­po­n­die­n­tes serían los si­guie­n­tes:

'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 si­m­pli­fi­car co­n­si­de­ra­ble­me­n­te el código. Para ilustrar su fu­n­cio­na­mie­n­to, 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 co­rre­s­po­n­die­n­te 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 co­rre­s­po­n­die­n­te 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 adi­cio­na­les. Es decir, debes tener cuidado para no perder in­fo­r­ma­ción im­po­r­ta­n­te. Con .replace(), puedes mover un archivo. Si ya existe un archivo con el mismo nombre en el destino, será so­bre­s­cri­to. Aquí tienes una forma de comprobar pre­via­me­n­te 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 de­s­plie­gues au­to­ma­ti­za­dos que puedes realizar en solo tres pasos. Siguiendo el principio “Push, build y deploy”, puedes im­ple­me­n­tar cambios más rápido. Te ase­so­ra­mos sobre nuestras di­fe­re­n­tes tarifas.

Ir al menú principal