IIC2233 / Syllabus-2022-1

Repositorio oficial del curso IIC2233 Programación Avanzada 🚀✨
https://iic2233.ing.puc.cl/
45 stars 40 forks source link

Dudas sobre el empleo de rutas relativas y absolutas #236

Open Daniel-Guajardo opened 2 years ago

Daniel-Guajardo commented 2 years ago

Tengo dudas respecto al empleo de rutas relativas en sí.

Quizá suene algo quisquilloso o quizá exagerado, pero estaba notando que, al emplear rutas relativas, el correcto funcionamiento del código depende totalmente del directorio desde donde se ejecuta el archivo. Por ejemplo, si tengo un par de rutas \Python\Programas\codigo.py y \Python\Programas\texto.txt,y referencio en el código a una ruta relativa texto.txt. Si ejecuto en una terminal el archivo codigo.py desde su directorio contenedor (el directorio Programas), no me genera ningún inconveniente; pero si ejecuto en una terminal el archivo codigo.py desde el directorio Python, entonces me entrega un error por no encontrar el archivo texto.txt en el propio directorio Python.

Considerando esto, creo que más de un problema puede generar el emplear rutas relativas dentro de un código, a menos claro que se especifique concretamente que el código debe ejecutarse desde su directorio contenedor.

Respecto a las rutas absolutas también tengo dudas.

Es cierto que emplear rutas absolutas puede causar conflictos en un código ya que es posible que la ruta absoluta descrita en éste exista en un equipo, pero no en otro. Sin embargo, la variable especial __file__ nos entrega la ruta absoluta del archivo .py que se esté ejecutando, y la ruta que entrega varía en función del equipo y del directorio en donde se encuentra, es decir, no se darían conflictos de que la ruta absoluta no exista.

En este aspecto, creo que emplear la variable __file__ para obtener la ruta absoluta del archivo generaría menos (si no ninguno) conflictos que emplear una ruta relativa ya que, al emplear __file__, el código no generaría inconvenientes independiente de desde qué directorio se ejecute el archivo en la terminal ni desde qué equipo.

Entonces... ¿Por qué no mejor emplear la variable __file__ (a pesar de ser una ruta absoluta) en lugar de emplear rutas relativas para trabajar?