2009-09-20 15 views
7

Jak uzyskać nazwę działającego skryptu w języku Python?Jak uzyskać nazwę działającego skryptu w języku Python?

Próbowałem os.__file__, ale to zwraca nazwę pliku, w którym znajduje się os.

+2

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

+0

http://stackoverflow.com/q/4152963/2336725 wydaje się być lepszym duplikatem. – Teepeemm

Odpowiedz

1

sys.argv[0] powinien podać nazwę skryptu.

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

lub jeśli po prostu chcesz skryptu, a nie pełną ścieżkę

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

Tak, to działa (= 1). @tehryan proszę przyjąć to jako odpowiedź, aby pomóc innym, którzy mają to samo pytanie – Mawg

19

Zastosowanie

thisFile = __file__ 

To magia!

+0

Otrzymuję '' NameError: name '__file__' nie jest zdefiniowany''''. – bos

+0

Którą implementację Pythona używasz? CPython czy coś innego? – Chazadanga

+0

Python 2.7.3. Właśnie uruchomiłem "python", a następnie "print __file__'. – bos

-1
sys.path[0] 

zwraca ścieżkę skryptu, który uruchomił interpreter języka Python.

Jeśli bezpośrednio przeczytasz ten skrypt, zwróci on ścieżkę skryptu. Jeśli skrypt został zaimportowany z innego skryptu, zwróci ścieżkę do tego skryptu.

+0

Nie spadłem, ale po prostu przetestowałem. To dało mi 'K:/code/allRequirementsTests', który jest absolutną ścieżką skryptu, pomniejszoną o rozszerzenie – Mawg

6

To zależy od tego, co masz na myśli przez "uruchomiony skrypt python".

__file__ poda nazwę aktualnie wykonywanego pliku. Jeśli to moduł, otrzymasz miejsce, do którego został zaimportowany z, np. blahblah.pyc

sys.argv[0] poda nazwę skryptu, który jest uruchamiany, nawet jeśli wywołany z modułu zaimportowanego przez ten skrypt.

Proszę spojrzeć na odpowiedzi na wcześniejsze pytanie na ten temat (patrz komentarz S.Lott na twoje pytanie).

0
import __main__ 
print __main__.__file__ 

To spowoduje wydrukowanie bieżącego pliku, który jest uruchomiony

Powiązane problemy