Nájdite cestu k danému súboru pomocou Pythonu

Nájdite cestu k danému súboru pomocou Pythonu

Umiestnenie (cestu) spusteného súboru skriptu .py môžeme získať pomocou __file__. __file__ je užitočný na čítanie iných súborov a poskytuje aktuálne umiestnenie spusteného súboru. Líši sa verziami. V Pythone 3.8 a staršom vracia __file__ cestu zadanú pri spustení Python príkaz.

Môžeme získať relatívnu cestu, ak je zadaná relatívna cesta. Ak zadáme absolútnu cestu, vráti sa absolútna cesta. Ale v Pythone 3.9 a novších __file__ vždy vracia absolútnu cestu, modul OS poskytuje rôzne pomôcky.

Spôsoby, ako získať aktuálny adresár v Pythone s OS

Existuje mnoho spôsobov, ako získať aktuálny adresár v Pythone s OS. Tu používame niektoré všeobecne používané spôsoby, ako získať aktuálny adresár v Pythone s OS, ktoré nasledujú.

  • Pomocou Path.cwd()
  • Použitím os.getcwd()
  • Použitie pathlib.Path().absolute()
  • Pomocou os. cesta.základný názov
  • Použitím os.path.abspath

Nájdite cestu k danému súboru pomocou Path.cwd()

Tu má dôležité miesto myšlienka súčasného pracovného adresára (CWD). Myslite na CWD ako priečinok, v ktorom je spustený Python. Python predpokladá, že súbor začína v CWD, ak sa volá jednoducho podľa mena, takže odkaz iba na názov bude fungovať iba vtedy, ak je súbor v CWD Pythonu. Path.cwd() vráti aktuálny adresár.

Python3




from> pathlib> import> Path> print> (Path.cwd())>

Výkon:

C:Usersint.suraj.gupta 

Získajte aktuálny adresár v Pythone s OS pomocou os.getcwd()

Môžeme získať absolútnu cestu aktuálneho pracovného adresára. Takže v závislosti od použitej verzie sa získa buď relatívna cesta, alebo absolútna cesta. Ak chcete získať aktuálny pracovný adresár v Pythone, použite os. getcwd () metóda. Táto funkcia modulu Python OS vracia reťazec obsahujúci absolútnu cestu k aktuálnemu pracovnému adresáru.

Python3




import> os> print> (> 'Get current working directory : '> , os.getcwd())>

Výkon:

Get current working directory : C:Usersint.suraj.gupta 

Získajte aktuálny adresár v Pythone s OS použitím pathlib.Path().absolute()

Táto funkcia Pythonu modul OS vráti reťazec obsahujúci absolútnu cestu k aktuálnemu pracovnému adresáru.

Python3




import> pathlib> # current working directory> print> (pathlib.Path().absolute())>

Výkon:

C:Usersint.suraj.gupta 

Nájdite cestu k danému súboru pomocou os.path.basename

Nižšie uvedeným spôsobom môžeme získať názov súboru a názov adresára spusteného súboru. Hlavná vec, ktorej treba rozumieť __file__ je, že tlmočník ho za behu upraví tak, že Python vie, s ktorým súborom pracuje, keď skript používa niekoľko modulov. Výhodou volania Path( file__) je, že vracia reťazec obsahujúci cestu a súbor, na ktorom práve pracujete.

  • Pri úprave súboru môžete volať __file__. Výsledkom je, že ak sa ho pokúsite zavolať z interpretera shellu, nespustí sa.
  • __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ýkon:

Nájdite cestu k danému súboru pomocou os.path.abspath

Môže to znieť komplikovane, ale os.path.abspath() jednoducho znamená, že táto metóda vráti názov cesty k ceste zadanej ako argument tejto funkcie. Dokumentácia tvrdí, že táto metóda vytvára normalizovanú absolutizovanú verziu cesty k názvu cesty.

Príklad 1: Ak chcete získať absolútnu cestu spusteného súboru.

Python3




import> os> print> (> 'Absolute path of file: '> ,> > os.path.abspath(__file__))> print> (> 'Absolute directoryname: '> ,> > os.path.dirname(os.path.abspath(__file__)))>

Výkon:

Príklad 2: Ak zadáme absolútnu cestu v os.path.abspath(), vráti sa taká, aká je, takže ak je __file__ absolútna cesta, žiadna chyba nenastane, aj keď nastavíme os.path. abspath (__file__)

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ýkon: