logo

Pobierz bieżący katalog w Pythonie

W tym artykule omówimy, jak uzyskać i zmienić katalog roboczy w Pythonie. Podczas pracy z Obsługa plików mogłeś zauważyć, że do plików odnoszą się tylko ich nazwy, np. „GFG.txt” i jeśli plik nie znajduje się w katalogu skryptu, Python zgłasza błąd. Koncepcja Aktualny katalog roboczy (CWD) staje się tu ważne. Rozważ CWD jako folder, w którym działa Python. Ilekroć pliki są wywoływane tylko według nazwy, Python zakłada, że ​​zaczyna się w CWD, co oznacza, że ​​odwołanie oparte wyłącznie na nazwie będzie skuteczne tylko wtedy, gdy plik znajduje się w CWD Pythona.

Notatka: Folder, w którym działa skrypt Pythona, nazywany jest katalogiem bieżącym. Może to nie być ścieżka, w której znajduje się skrypt Pythona.



Co to jest moduł operacyjny Pythona?

Python zapewnia moduł systemu operacyjnego do interakcji z systemem operacyjnym. Moduł ten należy do standardowego modułu narzędziowego Pythona. Wszystkie funkcje w module os podnoszą OSEBłąd w przypadku nieprawidłowych lub niedostępnych nazw plików i ścieżek lub innych argumentów, które mają poprawny typ, ale nie są akceptowane przez system operacyjny.

Python Znajdź bieżący katalog

Uzyskaj katalog bieżącego skryptu Pythona za pomocą sys.argv[0]

W tym przykładzie użyliśmy sys.argv[0] aby pobrać ścieżkę pliku skryptu i os.ścieżka.nazwakatalogu() wyodrębnia bieżący katalog ze ścieżki.

Python3








import> os> import> sys> script_directory>=> os.path.dirname(os.path.abspath(sys.argv[>0>]))> print>(script_directory)>

>

>

Wyjście :

Pobierz katalog bieżącego skryptu Pythona

Pobierz katalog bieżącego skryptu Pythona

Uzyskaj katalog bieżącego skryptu Pythona za pomocą modułu Inspect

W tym przykładzie użyliśmy inspekcja.getfile(inspect.currentframe()) który zwraca ścieżkę bieżącego pliku skryptu, oraz os.ścieżka.nazwakatalogu() wyodrębnia bieżący katalog ze ścieżki.

Python3




import> inspect> import> os> script_directory>=> os.path.dirname(os.path.abspath(> >inspect.getfile(inspect.currentframe())))> > print>(script_directory)>

>

>

Wyjście :

krotki Java
Pobierz katalog bieżącego skryptu Pythona

Pobierz katalog bieżącego skryptu Pythona

Pobierz bieżący katalog roboczy za pomocą os.getcwd()

W tym przykładzie użyliśmy os.getcwd() aby uzyskać bieżący katalog skryptu Python.

Python3




import> os> > print>(>'File location using os.getcwd():'>, os.getcwd())>

>

>

Wyjście :

File location using os.getcwd(): /home/tuhingfg/Documents/Scripts>

Notatka: Za pomocą os.getcwd() nie działa zgodnie z oczekiwaniami, gdy kod Pythona jest uruchamiany z innego katalogu niż skrypt Pythona.

Nieoczekiwany wynik podczas uruchamiania skryptu Pythona z innego katalogu niż skrypt przy użyciu os.getcwd()

Wewnątrz znajduje się skrypt Pythona /home/tuhingfg/Dokumenty/Skrypty . Gdy uruchomimy skrypt z tego samego folderu, zostanie podana poprawna lokalizacja skryptu. Ale kiedy zmieniamy nasz katalog na inne miejsce, wyświetlana jest lokalizacja tego katalogu. To dlatego, że os.getcwd() uwzględnia katalog, z którego wykonujemy skrypt. Na tej podstawie wynik os.getcwd() też się różni.

Python3




import> os> > print>(>'File location using os.getcwd():'>, os.getcwd())>

>

>

Wyjście:

Uzyskaj lokalizację skryptu za pomocą os.getcwd()

Uzyskaj lokalizację skryptu za pomocą os.getcwd()

Uzyskaj lokalizację skryptu Pythona za pomocą metody os.path.realpath().

Funkcja os.path.realpath() może zostać użyta do uzyskania ścieżki bieżącego skryptu Pythona. W rzeczywistości metoda os.path.realpath() w Pythonie służy do uzyskania ścieżki kanonicznej określonej nazwy pliku poprzez wyeliminowanie wszelkich dowiązań symbolicznych napotkanych w ścieżce. Specjalna zmienna __plik__ zostaje przekazany do realpath() metodę uzyskania ścieżki skryptu Pythona.

W tym przykładzie os.getcwd() I __plik__ podać dwa różne wyniki. Ponieważ wykonujemy skrypt z innego folderu niż skrypt, os.getcwd() dane wyjściowe zmieniły się w zależności od folderu wykonania skryptu. Ale __plik__ generuje stały wynik niezależnie od bieżącego katalogu roboczego.

Python3




obrazy przecen
import> os> > print>(>'File location using os.getcwd():'>,> >os.getcwd())> > print>(f>'File location using __file__ variable:'>+> >'{os.path.realpath(os.path.dirname(__file__))}'>)>

>

>

Wyjście:

Pobierz katalog Pythona

Uzyskaj katalog za pomocą Pythona

Uwaga: __plik__ jest ścieżką do pliku, z którego załadowano moduł, jeśli został załadowany z pliku.