2009-09-20 18 views
7

¿Cómo obtengo el nombre de una secuencia de comandos de Python en ejecución?¿Cómo obtener el nombre de un script de Python en ejecución?

Intenté os.__file__ pero eso devuelve el nombre del archivo donde reside os.

+2

duplicado: 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 parece ser un mejor duplicado. – Teepeemm

Respuesta

1

sys.argv[0] debería darle el nombre del guión.

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

o si lo que desea el guión y no la ruta completa

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

Sí, eso funciona (= 1). @tehryan por favor acepte esto como la respuesta, para ayudar a otros que tienen la misma pregunta – Mawg

19

Uso

thisFile = __file__ 

es magia!

+0

Me sale '' 'NameError: name '__file__' no está definido'''. – bos

+0

¿Qué implementación de Python estás usando? CPython o algo más? – Chazadanga

+0

Python 2.7.3. Acabo de ejecutar "python" y luego "print __file__". – bos

-1
sys.path[0] 

devuelve la ruta del script que inició el intérprete de Python.

Si lee esta secuencia de comandos directamente, devolverá la ruta de la secuencia de comandos. Si la secuencia de comandos se importó de otra secuencia de comandos, devolverá la ruta de esa secuencia de comandos.

+0

No bajé, pero acabo de probar. Esto me dio 'K:/code/allRequirementsTests', que es la ruta absoluta del script, menos la extensión – Mawg

6

Depende de lo que quiere decir con "un script de python en ejecución".

__file__ le dará el nombre del archivo que se está ejecutando actualmente. Si se trata de un módulo, obtendrá el lugar desde el que se importó, p. blahblah.pyc

sys.argv[0] le dará el nombre de la secuencia de comandos que se está ejecutando, incluso si se llama desde un módulo que esa secuencia de comandos importó.

Busque las respuestas a la pregunta anterior sobre este tema (consulte el comentario de S.Lott sobre su pregunta).

0
import __main__ 
print __main__.__file__ 

Esto imprimirá el nombre del archivo actual que se está ejecutando

Cuestiones relacionadas