Tengo scripts que llaman a otros archivos de script pero necesito obtener la ruta del archivo que se está ejecutando actualmente dentro del proceso.
Por ejemplo, digamos que tengo tres archivos. Usando execfile:
script_1.py
llama a script_2.py
.script_2.py
llama a script_3.py
.¿Cómo puedo obtener el nombre del archivo y la ruta de script_3.py
, desde el código dentro de script_3.py
, sin tener que pasar esa información como argumentos desde script_2.py
?
(Ejecutar os.getcwd()
devuelve la ruta de archivo original del script inicial, no la del archivo actual).
No está del todo claro a qué te refieres con "la ruta del archivo que se está ejecutando actualmente dentro del proceso".
sys.argv[0]
normalmente contiene la ubicación del script que fue invocado por el intérprete de Python.
Consulte la documentación de sys para más detalles.
Como @Tim y @Pat Notz han señalado, el atributo __file_\ proporciona acceso a
el archivo desde el que se cargó el módulo cargado, si fue cargado desde un archivo
El atributo __file__
funciona tanto para el archivo que contiene el código de ejecución principal como para los módulos importados.
Ver https://web.archive.org/web/20090918095828/http://pyref.infogami.com/__file__
Creo que es sólo __file__
Parece que también querrás comprobar el módulo inspect.