Poiščite pot do dane datoteke s Pythonom

Poiščite pot do dane datoteke s Pythonom

Lokacijo (pot) izvajajoče se skriptne datoteke .py lahko pridobimo z __file__. __mapa__ je uporaben za branje drugih datotek in podaja trenutno lokacijo tekoče datoteke. Razlikuje se po različicah. V Pythonu 3.8 in starejših __file__ vrne pot, določeno pri izvajanju Python ukaz.

Relativno pot lahko dobimo, če je navedena relativna pot. Če podamo absolutno pot, se vrne absolutna pot. Toda v Pythonu 3.9 in novejših __file__ vedno vrne absolutno pot, OS modul ponuja različne pripomočke.

Načini pridobivanja trenutnega imenika v Pythonu z OS

Obstaja veliko načinov, kako pridobiti trenutni imenik v Pythonu z OS. Tukaj uporabljamo nekaj splošno uporabljenih načinov za pridobitev trenutnega imenika v Pythonu z OS, ki so naslednji.

  • Uporaba Path.cwd()
  • Uporaba os.getcwd()
  • Uporaba pathlib.Path().absolute()
  • Uporaba os. path.basename
  • Uporaba os.path.abspath

Poiščite pot do dane datoteke z uporabo Path.cwd()

Pri tem ima pomembno mesto ideja Current Working Directory (CWD). Pomislite na CWD kot mapo, v kateri se izvaja Python. Python predpostavlja, da se datoteka začne v CWD, če je poklicana preprosto po imenu, tako da bo referenca samo z imenom delovala le, če je datoteka v Pythonovem CWD. Path.cwd() vrne trenutni imenik.

Python3




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

Izhod:

C:Usersint.suraj.gupta 

Pridobite trenutni imenik v Pythonu z OS z uporabo os.getcwd()

Dobimo lahko absolutno pot trenutnega delovnega imenika. Odvisno od uporabljene različice je torej pridobljena relativna ali absolutna pot. Če želite pridobiti trenutni delovni imenik v Pythonu, uporabite os. getcwd () metoda. Ta funkcija modula OS Python vrne niz, ki vsebuje absolutno pot do trenutnega delovnega imenika.

Python3




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

Izhod:

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

Pridobite trenutni imenik v Pythonu z OS uporabo pathlib.Path().absolute()

Ta funkcija Pythona OS modul vrne niz, ki vsebuje absolutno pot do trenutnega delovnega imenika.

Python3




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

Izhod:

C:Usersint.suraj.gupta 

Poiščite pot do dane datoteke z os.path.basename

Ime datoteke in ime imenika tekoče datoteke lahko dobimo na spodnji način. Ključna stvar, ki jo je treba razumeti __mapa__ je, da ga tolmač med izvajanjem prilagodi tako, da Python ve, s katero datoteko ima opravka, ko skript uporablja več modulov. Prednost klica Path( file__) je, da vrne niz, ki vsebuje pot in datoteko, na kateri trenutno delate.

  • Med spreminjanjem datoteke lahko pokličete __file__. Posledično se ne bo izvršil, če ga poskusite poklicati iz tolmača lupine.
  • __file__ ne deluje v a Jupyterjev zvezek kontekstu.

Python3




import> os> print> (> 'File name : '> , os.path.basename(__file__))> print> (> 'Directory Name: '> , os.path.dirname(__file__))>

Izhod:

Poiščite pot do dane datoteke z os.path.abspath

Morda se sliši zapleteno, vendar os.path.abspath() preprosto pomeni, da ta metoda vrne ime poti do poti, podane kot argument tej funkciji. Dokumentacija trdi, da ta metoda ustvari normalizirano absolutizirano različico poti imena poti.

Primer 1: Če želite pridobiti absolutno pot datoteke, ki se izvaja.

Python3




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

Izhod:

Primer 2: Če podamo absolutno pot v os.path.abspath(), bo vrnjena takšna, kot je, torej če je __file__ absolutna pot, napaka se ne bo zgodila, tudi če nastavimo os.path. abspath (__mapa__)

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)))>

Izhod: