Chcę uzyskać ścieżkę do bieżącego katalogu, w którym jest wykonywany plik .py.
Na przykład prosty plik D:\test.py
z kodem:
import os
print os.getcwd()
print os.path.basename(__file__)
print os.path.abspath(__file__)
print os.path.dirname(__file__)
To dziwne, że wynik to:
D:\
test.py
D:\test.py
EMPTY
Oczekuję tych samych wyników z getcwd()
i path.dirname()
.
Biorąc pod uwagę os.path.abspath = os.path.dirname + os.path.basename
, dlaczego
os.path.dirname(__file__)
zwraca puste?
os.path.dirname(filename) + os.path.basename(filename) == filename
ponieważ brakuje separatora katalogów. Raczej mamy:os.path.join(os.path.dirname(filename), os.path.basename(filename)) == filename
__file__
rozwija się do nazwy bieżącego pliku, więc możesz użyć dosłownej kopii kodu z tej odpowiedzi.można również użyć w ten sposób:
źródło
źródło
os.path.realpath(__file__)
zwraca abspath bieżącego skryptu; os.path.split (abspath) [0] zwraca bieżący katalogźródło
Możesz także użyć w ten sposób
źródło