2009-09-20 20 views
7

Come posso ottenere il nome di uno script Python in esecuzione?Come ottenere il nome di uno script Python in esecuzione?

Ho provato os.__file__ ma che restituisce il nome del file in cui si trova os.

+2

Duplicate: http://stackoverflow.com/questions/50499/in-python-how-do-i-get-the-path-and -name-of-the-file-that-is-currently-executing –

+0

http://stackoverflow.com/q/4152963/2336725 sembra essere un duplicato migliore. – Teepeemm

risposta

1

sys.argv[0] dovrebbe darvi il nome dello script.

17
>> import os 
>> import sys 
>> print sys.argv[0] 

o se si desidera solo lo script e non il percorso completo

>> 
>> print os.path.basename(sys.argv[0]) 
+1

Sì, funziona (= 1). @tehryan per favore accetta questa come risposta, per aiutare gli altri che hanno la stessa domanda – Mawg

19

Usa

thisFile = __file__ 

è magia!

+0

Ricevo '' 'NameError: name '__file__' non è definito'''. – bos

+0

Quale implementazione Python stai usando? CPython o qualcos'altro? – Chazadanga

+0

Python 2.7.3. Ho appena eseguito "python" quindi "print __file__'. – bos

-1
sys.path[0] 

restituisce il percorso dello script che ha lanciato l'interprete Python.

Se si legge direttamente questo script, verrà restituito il percorso dello script. Se lo script è stato importato da un altro script, restituirà il percorso di quello script.

+0

Non ho fatto downvote, ma ho appena provato. Questo mi ha dato 'K:/code/allRequirementsTests' che è il percorso assoluto dello script, meno l'estensione – Mawg

6

Dipende da cosa intendi con "uno script Python in esecuzione".

__file__ ti darà il nome del file attualmente in esecuzione. Se questo è un modulo, otterrai la posizione in cui è stato importato, ad es. blahblah.pyc

sys.argv[0] ti darà il nome dello script che viene eseguito, anche se chiamato da un modulo importato da tale script.

Si prega di cercare le risposte alla domanda precedente su questo argomento (vedere il commento di S.Lott sulla propria domanda).

0
import __main__ 
print __main__.__file__ 

Questo stamperà il nome del file corrente che è in esecuzione

Problemi correlati