# Python pathlib: cómo funciona el módulo y qué ventajas tiene

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](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/que-lenguaje-de-programacion-aprender/) 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](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/python-oop/) 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:

```python
from pathlib import Path
```

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:

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

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

```python
colores/azul.txt
```

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](https://www.ionos.es/digitalguide/servidores/know-how/linux-una-alternativa-a-windows-de-bajo-coste/) 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**:

```python
from pathlib import Path 
Path.cwd()
```

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:

```python
from pathlib import Path 
Path.home()
```

## 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í:

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

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 `pathlib`en 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:

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

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

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

## 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:

```python
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
```

- `.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:

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

## 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í:

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

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:

```python
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("*")
```

## 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:

```python
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)
```

## 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:

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

## 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:

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

## Crear archivos vacíos

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

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

Consejo Consigue tus objetivos con GitHub. [Deploy Now](https://www.ionos.es/alojamiento/deploy-now "Deploy Now de IONOS") 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.


This is a markdown version of: [https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/python-pathlib/](https://www.ionos.es/digitalguide/paginas-web/desarrollo-web/python-pathlib/) for AI/LLM consumption.