Representación de caminos en Python

Representación de caminos en Python' (Condensed)

Por esto deberías evitar representar rutas como cadenas y usar Pathlib en su lugar

Foto de Matt Duncan en Unsplash

Trabajar con sistemas de archivos es una de las tareas más triviales en la programación. Sorprendentemente, muchos de nosotros todavía lo hacemos mal ya que tendemos a representar las rutas de los archivos como cadenas. Esto es fundamentalmente incorrecto y uno de los anti-patrones más comunes que seguramente ya has visto en muchos repositorios de Python diferentes.

En el artículo de hoy discutiremos por qué es una mala idea utilizar cadenas (o incluso el módulo os) para representar rutas en sistemas de archivos. Además, discutiremos las mejores prácticas y veremos en acción cómo utilizar el paquete pathlib para codificar correctamente las rutas de archivos en Python. ¡Empecemos!

Por qué utilizar cadenas para representar rutas es una mala idea

Diferentes sistemas operativos utilizan diferentes convenciones de nomenclatura cuando se trata de representar rutas en sus sistemas de archivos. Por ejemplo, Unix utiliza una barra diagonal / como separador de directorios, mientras que Windows utiliza barras invertidas \

# Unix (por ejemplo, Linux, OSX, etc.)/home/this/is/a/path/to/a/directory# WindowsC:\home\this\is\a\path\to\a\directory

La portabilidad del código se refiere a un conjunto de principios que permiten que el código fuente se ejecute en múltiples entornos diferentes con el mismo comportamiento. Por lo tanto, la representación de rutas con cadenas no sería posible, a menos que manejemos las rutas de manera diferente, en función del sistema operativo en el que se ejecute el código fuente.

Pero incluso en ese caso, haríamos nuestro código desordenado e innecesariamente complejo.

# Esta es una mala prácticaimport platformif platform.system() == 'Windows':  filepath = 'C:\home\this\is\a\path\to\a\directory'else:  # por ejemplo, 'Darwin' para OSX o 'Linux'  filepath = '/home/this/is/a/path/to/a/directory'

Las operaciones adicionales en cadenas que representan rutas también se volverán más complejas. Supongamos que deseas concatenar dos rutas: la concatenación simple de cadenas podría resultar en una ruta no válida, especialmente si una o más cadenas contienen caracteres especiales como barras diagonales o invertidas.

path_1 = '/this/is/a/path/'path_2 = '/another/path'# filepath = '/this/is/a/path//another/path'filepath = path_1 + path_2

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Una nueva investigación de aprendizaje profundo identifica un medicamento antipalúdico como posible tratamiento para la osteoporosis

El problema de la osteoporosis, una condición caracterizada por una pérdida excesiva de hueso y un alto riesgo de fra...

Inteligencia Artificial

Tour de France incorpora ChatGPT y tecnología de gemelos digitales.

La compañía de tecnología de la información y servicios con sede en Japón, NTT, anunció que el Tour de Francia de est...

Noticias de Inteligencia Artificial

AI Ahora en el Aire Conoce a Ashley, el Primer Bot de DJ del Mundo.

Live 95.5, una popular estación de radio con sede en Portland, Oregón, ha dado un paso audaz hacia el futuro al prese...

Investigación

Investigadores de Princeton presentan Infinigen un generador procedural de escenas tridimensionales fotorrealistas del mundo natural.

El equipo de investigación de la Universidad de Princeton ha presentado Infinigen, un innovador generador procedural ...