El objetivo: Acceder/escribir a los mismos archivos temporales cuando se usa una función de utilidad común llamada desde varios módulos de python.¿Cómo puedo acceder a las rutas relativas en Python 2.7 cuando es importado por diferentes módulos?
Antecedentes: Estoy utilizando el módulo de unittest Python para ejecutar conjuntos de pruebas personalizadas que interactúan con la instrumentación a través de PySerial. Debido a que estoy usando el módulo unittest, no puedo pasar las variables requeridas, como qué puerto serie usar, en el caso de prueba de unittest. Para evitar esto, quiero crear un módulo que almacena y devuelve datos en escabeche. Me he encontrado con el problema de que cuando llamo a la función get_foo() desde test_case_1(), intenta cargar los datos conservados de la ruta relativa basada en test_case_1(), no el módulo real que contiene get_foo().
Vale la pena señalar que he contemplado el uso de variables globales, pero hay un puñado de datos que quiero retener desde la ejecución para ejecutar. Lo que significa que todos los módulos de Python se cerrarán y quiero volver a cargar los datos que se almacenaron en la ejecución anterior.
I en la pregunta de SO: Python - how to refer to relative paths of resources when working with code repository, pensé que encontré la solución en la primera respuesta. Para mi sorpresa, esto no funciona para mí en Python 2.7 (Debian)
¿Existe alguna forma confiable de devolver la ruta a un archivo específico cuando se llama desde diferentes módulos?
Gracias por entrar en detalles en su ejemplo. Era lo que necesitaba para resolver mis problemas. Resulta que estaba usando el nombre dir incorrectamente en mis pruebas. ¿Puedes señalar la documentación donde se describe el nombre del directorio (__ archivo__)? No lo vi en python.org. –
La documentación se puede encontrar en http://docs.python.org/library/os.path.html en el caso improbable de que no haya ayudado a archivar localmente. –
Esta es en realidad la página que busqué tratando de encontrar documentación en el campo __file__ de la función dirname. ¿Algunas ideas? –