Znajdź ścieżkę do podanego pliku za pomocą Pythona
Możemy uzyskać lokalizację (ścieżkę) działającego pliku skryptu .py za pomocą __file__. __plik__ jest przydatny do odczytu innych plików i podaje bieżącą lokalizację uruchomionego pliku. Różni się wersjami. W Pythonie 3.8 i wcześniejszych __file__ zwraca ścieżkę określoną podczas wykonywania Pyton Komenda.
Możemy uzyskać ścieżkę względną, jeśli zostanie określona ścieżka względna. Jeśli podamy ścieżkę bezwzględną, zwracana jest ścieżka bezwzględna. Ale w Pythonie 3.9 i nowszych wersjach __file__ zawsze zwraca ścieżkę bezwzględną, czyli plik Moduł systemu operacyjnego zapewnia różne narzędzia.
Sposoby uzyskania bieżącego katalogu w Pythonie z systemem operacyjnym
Istnieje wiele sposobów uzyskania bieżącego katalogu w Pythonie z systemem operacyjnym. Tutaj używamy kilku ogólnie używanych sposobów uzyskania bieżącego katalogu w Pythonie z następującymi systemami operacyjnymi.
- Korzystanie ze ścieżki.cwd()
- Za pomocą os.getcwd()
- Korzystanie ze ścieżki pathlib.Path().absolute()
- Korzystanie z os. ścieżka.nazwabazowa
- Za pomocą os.ścieżka.abspath
Znajdź ścieżkę do podanego pliku za pomocą Path.cwd()
Ważne miejsce zajmuje tu idea Current Working Directory (CWD). Pomyśl o CWD jako folder, w którym działa Python. Python zakłada, że plik zaczyna się w CWD, jeśli jest wywoływany po prostu po nazwie, zatem odwołanie oparte wyłącznie na nazwie będzie działać tylko wtedy, gdy plik znajduje się w CWD Pythona. Path.cwd() zwraca bieżący katalog.
Python3
from> pathlib> import> Path> print> (Path.cwd())> |
Wyjście:
C:Usersint.suraj.gupta
Pobierz bieżący katalog w Pythonie z systemem operacyjnym używając os.getcwd()
Możemy uzyskać bezwzględną ścieżkę bieżącego katalogu roboczego. Zatem w zależności od używanej wersji pobierana jest ścieżka względna lub ścieżka bezwzględna. Aby uzyskać bieżący katalog roboczy w Pythonie, użyj metody os. getcwd () metoda. Ta funkcja modułu Python OS zwraca ciąg znaków zawierający bezwzględną ścieżkę do bieżącego katalogu roboczego.
Python3
import> os> print> (> 'Get current working directory : '> , os.getcwd())> |
Wyjście:
Get current working directory : C:Usersint.suraj.gupta
Pobierz bieżący katalog w Pythonie z systemem operacyjnym za pomocą ścieżkalib.Ścieżka().absolute()
Ta funkcja Pythona Moduł systemu operacyjnego zwraca ciąg zawierający bezwzględną ścieżkę do bieżącego katalogu roboczego.
Python3
import> pathlib> # current working directory> print> (pathlib.Path().absolute())> |
Wyjście:
C:Usersint.suraj.gupta
Znajdź ścieżkę do podanego pliku za pomocą os.path.basename
Nazwę pliku i nazwę katalogu uruchomionego pliku możemy uzyskać w poniższy sposób. Kluczową rzeczą, którą należy zrozumieć __plik__ polega na tym, że interpreter dostosowuje to w czasie wykonywania, tak aby Pyton wie, z jakim plikiem ma do czynienia, gdy skrypt korzysta z kilku modułów. Zaletą wywołania Path(file__) jest to, że zwraca ciąg znaków zawierający ścieżkę i plik, nad którym aktualnie pracujesz.
- Możesz wywołać __file__ podczas modyfikowania pliku. W rezultacie, jeśli spróbujesz wywołać go z interpretera powłoki, nie zostanie on wykonany.
- __file__ nie działa w formacie a Notatnik Jupytera kontekst.
Python3
import> os> print> (> 'File name : '> , os.path.basename(__file__))> print> (> 'Directory Name: '> , os.path.dirname(__file__))> |
Wyjście:
Znajdź ścieżkę do podanego pliku za pomocą os.path.abspath
Może to wydawać się skomplikowane, ale os.path.abspath() oznacza po prostu, że ta metoda zwraca nazwę ścieżki do ścieżki podanej jako argument tej funkcji. Dokumentacja twierdzi, że ta metoda tworzy znormalizowaną, absolutyzowaną wersję ścieżki ścieżki.
Przykład 1: Aby uzyskać bezwzględną ścieżkę uruchomionego pliku.
Python3
import> os> print> (> 'Absolute path of file: '> ,> > os.path.abspath(__file__))> print> (> 'Absolute directoryname: '> ,> > os.path.dirname(os.path.abspath(__file__)))> |
Wyjście:
Przykład 2: Jeśli w os.path.abspath() określimy ścieżkę bezwzględną, zostanie ona zwrócona w niezmienionej postaci, więc jeśli __file__ jest ścieżką bezwzględną, żaden błąd nie wystąpi, nawet jeśli ustawimy os.path. abspata (__plik__)
Python3
import> os> pythonfile> => 'pathfinding.py'> # if the file is present in current directory,> # then no need to specify the whole location> print> (> 'Path of the file..'> , os.path.abspath(pythonfile))> for> root, dirs, files> in> os.walk(r> 'E:geeksforgeekspath_of_given_file'> ):> > for> name> in> files:> > > # As we need to get the provided python file,> > # comparing here like this> > if> name> => => pythonfile:> > print> (os.path.abspath(os.path.join(root, name)))> |
Wyjście: