Ho degli script che chiamano altri file di script, ma ho bisogno di ottenere il filepath del file che è attualmente in esecuzione all'interno del processo.
Per esempio, diciamo che ho tre file. Usando execfile:
script_1.py
chiama script_2.py
.script_2.py
chiama script_3.py
.Come posso ottenere il nome del file e il percorso di script_3.py
, dal codice all'interno di script_3.py
, senza dover passare queste informazioni come argomenti da script_2.py
?
(L'esecuzione di os.getcwd()
restituisce il filepath dello script originale di partenza, non quello del file corrente).
Non è del tutto chiaro cosa intendi per "il percorso del file che è attualmente in esecuzione nel processo".
sys.argv[0]
di solito contiene la posizione dello script che è stato invocato dall'interprete Python.
Controllate la documentazione di sys per maggiori dettagli.
Come @Tim e @Pat Notz hanno sottolineato, l'attributo \file\ fornisce accesso a
al file da cui il modulo è stato caricato, se è stato caricato da un file
L'attributo __file__
funziona sia per il file contenente il codice di esecuzione principale che per i moduli importati.
Vedere https://web.archive.org/web/20090918095828/http://pyref.infogami.com/__file__
Penso che sia solo __file__
Sembra che tu voglia anche controllare il modulo inspect.