Najděte cestu k danému souboru pomocí Pythonu
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
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: