El trabajo con archivos es algo habitual y necesario en casi cualquier leguaje de programación. Los archivos son uno de los métodos más utilizados para la importación y exportación de datos en los programas informáticos. Lo más probable, cuando se comienza a trabajar en Python, la forma de guardar y gestionar las rutas es mediante el uso de cadenas de texto, pero esta no es la mejor opción. Veamos por qué usar cadenas de texto para representar rutas en Python y cuál sería la opción más adecuada.
El problema de representar rutas como cadenas de texto en Python
Los programas de Python se pueden ejecutar en una gran variedad de sistemas operativos, cada uno de los cuales usa un método diferente para representar las rutas. En los sistemas basados en UNIX se usa ‘/’ para separar las carpetas, mientras que en Windows el separador es \
. Además, en Windows las rutas absolutas comienzan por la letra de la unidad, por lo que la ruta al escritorio en Windows sería algo como
C:/Users/analyticslane/Desktop/
mientras que en macOS sería algo como los siguiente
/Users/analyticslane/Desktop/
En Linux puede depender de la distribución que se usa, pero una posible ruta al escritorio, si se está utilizando un entorno gráfico, sería de la siguiente forma
/home/analyticslane/Desktop/
Por lo que para gestionar las rutas en varios sistemas operativos sería necesario incluir instrucciones if-else
para tener en cuenta los posibles cambios si se usan cadenas de texto. Aunque existe una forma más eficaz: usar la librería pathlib de Python.
Uso básico de pathlib en Python
En primer lugar, es necesario indicar que pathlib es una librería estándar de Python, por lo que viene instalada por defecto y no es necesario usar el comando pip
. Lo que permite su uso en nuestros programas sin miedo a que no se encuentre instalada.
pathlib es una librería que usa un enfoque orientado a objetos para trabajar con las rutas. La forma habitual de trabajar con ella es importar la clase Path
en la que se incluyen los métodos para trabajar con rutas. Una de las cosas más habituales puede ser la concatenación de rutas, lo que se puede hacer con /
from pathlib import Path path = Path('carpeta') / 'subcarpeta' / 'archivo.csv' path
Así, el resultado que se obtendrá en macOS y Linux sería carpeta/subcarpeta/archivo.csv
, mientras que en Windows sería carpeta\subcarpeta\archivo.csv
. Lo que tiene en cuenta las diferencias existentes en la forma de denotar las rutas de los archivos en los sistemas operativos.
Obtener información de la ruta
El objeto path
que se ha creado en el ejemplo anterior cuenta con diferentes métodos gracias a los cuales se puede obtener información relevante del archivo y la ruta. Algunos de los métodos más interesantes de este objeto son:
name
: el nombre del archivo o directorio al que apunta la ruta.stem
: el nombre del archivo sin extensión.suffix
: la extensión del archivo.parent
: el directorio en el que se encuentra el archivo o directorio.
Lo que se puede ver en el siguiente ejemplo
print(path) print(path.name) print(path.stem) print(path.suffix) print(path.parent) print(path.parent.parent)
carpeta/subcarpeta/archivo.csv archivo.csv archivo .csv carpeta/subcarpeta carpeta
Rutas de referencia
Otra de las ventajas de usar pathlib en Python es la posibilidad de obtener rutas de referencia como la carpeta actual (Path.cwd()
) o la carpeta raíz del usuario (Path.pwd
).
Path.cwd() # PosixPath('/Users/analyticslane/Desktop') Path.home() # PosixPath('/Users/analyticslane')
Conclusiones
En esta ocasión se ha visto el motivo porque no se deben usar cadenas de texto para represar rutas en Python y la alternativa que existe. Siendo lo correcto usar el pathlib para la gestión de rutas. Al trabajar con diferentes sistemas operativos y representar las rutas como cadenas de texto se puede dar el caso que un programa que funciona en Windows no lo haga en Linux o macOS o viceversa. Por lo que es mejor evitar estos problemas gestionando las rutas de forma adecuada.
Deja una respuesta