logo

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

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: