Najděte cestu k danému souboru pomocí Pythonu

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: