2009-09-20 5 views
7

Как получить имя запущенного скрипта Python?Как получить имя запущенного скрипта Python?

Я пробовал os.__file__, но возвращает имя файла, в котором находится os.

+2

Дубликат: http://stackoverflow.com/questions/50499/in-python-how-do-i-get-the-path-and -name-of-the-file-that-is-executing –

+0

http://stackoverflow.com/q/4152963/2336725 кажется лучшим дубликатом. – Teepeemm

ответ

1

sys.argv[0] должно указывать имя сценария.

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

или если вы просто хотите сценарий, а не полный путь

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

Yup, это работает (= 1). @tehryan, пожалуйста, примите это как ответ, чтобы помочь другим, у кого есть тот же вопрос. – Mawg

19

Использование

thisFile = __file__ 

Это волшебство!

+0

Я получаю '' 'NameError: name '__file__' не определен'''. – bos

+0

Какая реализация Python вы используете? CPython или что-то еще? – Chazadanga

+0

Python 2.7.3. Я просто запускал «python», затем «print __file__». – bos

-1
sys.path[0] 

возвращает путь к сценарию, запускающему интерпретатор Python.

Если вы прочитаете этот скрипт напрямую, он вернет путь к скрипту. Если скрипт был импортирован из другого скрипта, он вернет путь к этому скрипту.

+0

Я не спускал вниз, а просто тестировал. Это дало мне «K:/code/allRequirementsTests», который является абсолютным путем для скрипта, минус расширение – Mawg

6

Это зависит от того, что вы подразумеваете под «запущенным скриптом python».

__file__ даст вам имя исполняемого файла. Если это модуль, вы получите, где он был импортирован из, например, blahblah.pyc

sys.argv[0] даст вам имя исполняемого скрипта, даже если вызывается из модуля, который импортировал этот скрипт.

Пожалуйста, просмотрите ответы на более ранний вопрос по этой теме (см. Комментарий С.Лотта по вашему вопросу).

0
import __main__ 
print __main__.__file__ 

Это напечатает текущее имя файла, который работает

Смежные вопросы