Umístění (cestu) spuštěného souboru skriptu .py můžeme získat pomocí __file__. __soubor__ je užitečný pro čtení jiných souborů a udává aktuální umístění běžícího souboru. Liší se ve verzích. V Pythonu 3.8 a dřívějších vrací __file__ cestu zadanou při provádění Krajta příkaz.
Pokud je zadána relativní cesta, můžeme získat relativní cestu. Pokud zadáme absolutní cestu, vrátí se absolutní cesta. Ale v Pythonu 3.9 a novějších __file__ vždy vrací absolutní cestu, OS modul poskytuje různé pomůcky.
Způsoby, jak získat aktuální adresář v Pythonu s OS
Existuje mnoho způsobů, jak získat aktuální adresář v Pythonu s OS. Zde používáme některé obecně používané způsoby, jak získat aktuální adresář v Pythonu s OS, které následují.
- Pomocí Path.cwd()
- Použitím os.getcwd()
- Použití pathlib.Path().absolute()
- Pomocí os. cesta.základní název
- Použitím os.path.abspath
Najděte cestu k danému souboru pomocí Path.cwd()
Zde má důležité místo myšlenka Current Working Directory (CWD). Myslete na CWD jako složka, ve které je spuštěn Python. Python předpokládá, že soubor začíná v CWD, pokud je volán jednoduše jménem, takže odkaz pouze na jméno bude fungovat pouze v případě, že je soubor v CWD Pythonu. Path.cwd() vrátí aktuální adresář.
Python3
from> pathlib>import> Path> print>(Path.cwd())> |
>
>
Výstup:
C:Usersint.suraj.gupta>
Získejte aktuální adresář v Pythonu s OS pomocí os.getcwd()
Můžeme získat absolutní cestu k aktuálnímu pracovnímu adresáři. V závislosti na použité verzi se tedy načte buď relativní cesta, nebo absolutní cesta. Chcete-li získat aktuální pracovní adresář v Pythonu, použijte os. getcwd () metoda. Tato funkce modulu Python OS vrací řetězec obsahující absolutní cestu k aktuálnímu pracovnímu adresáři.
Python3
import> os> print>(>'Get current working directory : '>, os.getcwd())> |
>
>
Výstup:
Get current working directory : C:Usersint.suraj.gupta>
Získejte aktuální adresář v Pythonu s OS použitím pathlib.Path().absolute()
Tato funkce Pythonu OS modul vrátí řetězec obsahující absolutní cestu k aktuálnímu pracovnímu adresáři.
Python3
import> pathlib> # current working directory> print>(pathlib.Path().absolute())> |
>
>
Výstup:
C:Usersint.suraj.gupta>
Najděte cestu k danému souboru pomocí os.path.basename
Níže uvedeným způsobem můžeme získat název souboru a název adresáře běžícího souboru. Klíčová věc, které je třeba rozumět __soubor__ je, že jej interpret upraví za běhu tak, že Krajta ví, se kterým souborem pracuje, když skript používá několik modulů. Výhodou volání Path( file__) je, že vrací řetězec obsahující cestu a soubor, na kterém právě pracujete.
- Při úpravě souboru můžete volat __file__. Výsledkem je, že pokud se jej pokusíte volat z interpretu shellu, neprovede se.
- __file__ nefunguje v a notebook Jupyter kontext.
Python3
jak vypnout vývojářský režim android
import> os> print>(>'File name : '>, os.path.basename(__file__))> print>(>'Directory Name: '>, os.path.dirname(__file__))> |
>
>
Výstup:
Najděte cestu k danému souboru pomocí os.path.abspath
Může to znít složitě, ale os.path.abspath() jednoduše znamená, že tato metoda vrací cestu k cestě zadané jako argument této funkce. Dokumentace tvrdí, že tato metoda vytváří normalizovanou absolutizovanou verzi cesty k názvu cesty.
Příklad 1: Chcete-li získat absolutní cestu k běžícímu souboru.
Python3
import> os> print>(>'Absolute path of file: '>,> >os.path.abspath(__file__))> print>(>'Absolute directoryname: '>,> >os.path.dirname(os.path.abspath(__file__)))> |
>
>
Výstup:

Příklad 2: Pokud zadáme absolutní cestu v os.path.abspath(), bude vrácena taková, jaká je, takže pokud je __file__ absolutní cesta, žádná chyba nenastane, i když nastavíme os.path. abspath (__soubor__)
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)))> |
>
>
Výstup:
