Come posso ottenere il percorso e il nome del file che è attualmente in esecuzione?

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.
  • A sua volta, 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

Commentari (1)

L'attributo __file__ funziona sia per il file contenente il codice di esecuzione principale che per i moduli importati.

Vedere

Commentari (0)

Penso che sia solo __file__ Sembra che tu voglia anche controllare il modulo inspect.

Commentari (1)