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: