Finn banen til den gitte filen ved å bruke Python
Vi kan finne plasseringen (banen) til den kjørende skriptfilen .py med __file__. __fil__ er nyttig for å lese andre filer, og den gir gjeldende plassering av filen som kjører. Det er forskjellig i versjoner. I Python 3.8 og tidligere returnerer __file_ banen spesifisert når du kjører Python kommando.
Vi kan få en relativ bane hvis en relativ sti er spesifisert. Hvis vi spesifiserer en absolutt bane, returneres en absolutt bane. Men i Python 3.9 og senere returnerer __file__ alltid en absolutt bane, den OS-modul tilbyr ulike verktøy.
Måter å få den nåværende katalogen i Python med OS
Det er mange måter å få den gjeldende katalogen i Python med OS. Her bruker vi noen generelt brukte måter å få den gjeldende katalogen i Python med OS som følger.
- Bruker Path.cwd()
- Ved hjelp av os.getcwd()
- Bruker pathlib.Path().absolute()
- Bruker os. bane.basenavn
- Ved hjelp av os.path.abspath
Finn banen til den gitte filen ved å bruke Path.cwd()
Her har ideen om Current Working Directory (CWD) en viktig plass. Tenk på CWD som mappen som Python kjører i. Python antar at filen starter i CWD hvis den kalles bare ved navn, så en referanse kun for navn vil bare fungere hvis filen er i Pythons CWD. Path.cwd() returnerer gjeldende katalog.
Python3
from> pathlib> import> Path> print> (Path.cwd())> |
Produksjon:
C:Usersint.suraj.gupta
Få den gjeldende katalogen i Python med OS bruker os.getcwd()
Vi kan få den absolutte banen til gjeldende arbeidskatalog. Så avhengig av versjonen som brukes, hentes enten en relativ bane eller absolutt bane. For å få tak i den gjeldende arbeidskatalogen i Python, bruk OS. getcwd () metode. Denne funksjonen til Python OS-modulen returnerer strengen som inneholder den absolutte banen til gjeldende arbeidskatalog.
Python3
import> os> print> (> 'Get current working directory : '> , os.getcwd())> |
Produksjon:
Get current working directory : C:Usersint.suraj.gupta
Få den gjeldende katalogen i Python med OS ved hjelp av pathlib.Path().absolute()
Denne funksjonen til Python OS-modul returnerer strengen som inneholder den absolutte banen til gjeldende arbeidskatalog.
Python3
import> pathlib> # current working directory> print> (pathlib.Path().absolute())> |
Produksjon:
C:Usersint.suraj.gupta
Finn banen til den gitte filen ved å bruke os.path.basename
Vi kan få filnavnet og katalognavnet til den kjørende filen på måten nedenfor. Nøkkelen å forstå om __fil__ er at tolken justerer det ved kjøretid slik at Python vet hvilken fil det har å gjøre med når skriptet bruker flere moduler. Fordelen med å kalle Path( file__) er at den returnerer en streng som inneholder banen og filen du jobber med.
- Du kan kalle __fil__ mens du endrer en fil. Som et resultat, hvis du prøver å ringe det fra shell-tolken, vil det ikke utføres.
- __fil__ fungerer ikke i en Jupyter notatbok kontekst.
Python3
import> os> print> (> 'File name : '> , os.path.basename(__file__))> print> (> 'Directory Name: '> , os.path.dirname(__file__))> |
Produksjon:
Finn banen til den gitte filen ved å bruke os.path.abspath
Det kan høres komplisert ut, men os.path.abspath() betyr ganske enkelt at denne metoden returnerer banenavnet til banen som er oppgitt som et argument til denne funksjonen. Dokumentasjonen hevder at denne metoden produserer en normalisert absolutt versjon av banenavnet.
Eksempel 1: For å få den absolutte banen til den kjørende filen.
Python3
import> os> print> (> 'Absolute path of file: '> ,> > os.path.abspath(__file__))> print> (> 'Absolute directoryname: '> ,> > os.path.dirname(os.path.abspath(__file__)))> |
Produksjon:
Eksempel 2: Hvis vi spesifiserer en absolutt bane i os.path.abspath(), vil den bli returnert som den er, så hvis __file__ er en absolutt bane, ingen feil vil oppstå selv om vi setter os.path. abspath (__fil__)
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)))> |
Produksjon: