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](https://miro.medium.com/v2/resize:fit:640/format:webp/1*m17ZhhPk_gV0YzcUbz4_8g.jpeg)
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.
- Regresión lineal desde cero con NumPy
- Las 5 Mejores Herramientas de IA para Maximizar la Productividad
- Utilizando OCR para dibujos de ingeniería complejos
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!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- Desvelando el futuro de la IA con GPT-4 y la IA Explicada (XAI)
- El poder de la destilación del conocimiento en la IA moderna acortando la brecha entre modelos potentes y compactos
- Análisis de sentimiento en las reseñas de hoteles de TripAdvisor con ChatGPT
- PyTorch LSTMCell – Formas de entrada, estado oculto, estado de celda y salida
- Extrayendo sinónimos (palabras similares) del texto utilizando BERT y NMSLIB 🔥
- Análisis de sentimientos realizado en los tweets del terremoto en Turquía
- PyTorch LSTM Formas de entrada, estado oculto, estado de celda y salida