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
.
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
.
sys.argv[0]
powinien podać nazwę skryptu.
>> 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])
Tak, to działa (= 1). @tehryan proszę przyjąć to jako odpowiedź, aby pomóc innym, którzy mają to samo pytanie – Mawg
Zastosowanie
thisFile = __file__
To magia!
Otrzymuję '' NameError: name '__file__' nie jest zdefiniowany''''. – bos
Którą implementację Pythona używasz? CPython czy coś innego? – Chazadanga
Python 2.7.3. Właśnie uruchomiłem "python", a następnie "print __file__'. – bos
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.
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
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).
import __main__
print __main__.__file__
To spowoduje wydrukowanie bieżącego pliku, który jest uruchomiony
Duplikat: http://stackoverflow.com/questions/50499/in-python-how-do-i-get-the-path-and -name-of-the-file-that-is-being-executing –
http://stackoverflow.com/q/4152963/2336725 wydaje się być lepszym duplikatem. – Teepeemm