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 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
pythonPara 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)
pythonEl resultado sería, por ejemplo, el siguiente:
colores/azul.txt
pythonPor 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()
pythonEsto 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()
pythonAcceso 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")
pythonLa 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:
from pathlib import Path
for file_path in Path.cwd().glob("*.txt"):
nuevo_path = Path("ejemplo") / file_path.name
file_path.rename(nuevo_path)
pythonAlternativamente, puedes usar el método joinpath()
para obtener el mismo resultado:
from pathlib import Path
Path.home().joinpath("ejemplo", "subcarpeta", "archivo.py")
pythonUtilizar 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'
pythonLeer 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
textAhora 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("*")
pythonCambiar 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)
pythonCopiar 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())
pythonMover 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)
pythonCrear 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()
pythonConsigue 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.