Find stien til den givne fil ved hjælp af Python

Find stien til den givne fil ved hjælp af Python

Vi kan få placeringen (stien) af den kørende scriptfil .py med __file__. __fil__ er nyttig til at læse andre filer, og den giver den aktuelle placering af den kørende fil. Det adskiller sig i versioner. I Python 3.8 og tidligere returnerer __file_ den sti, der er angivet, når du udfører Python kommando.

Vi kan få en relativ sti, hvis en relativ sti er angivet. Hvis vi angiver en absolut sti, returneres en absolut sti. Men i Python 3.9 og senere returnerer __file__ altid en absolut sti, den OS modul leverer forskellige hjælpeprogrammer.

Måder at få den aktuelle mappe i Python med OS

Der er mange måder at få den aktuelle mappe i Python med OS. Her bruger vi nogle almindeligt anvendte måder at få den aktuelle mappe i Python med OS, de følger.

  • Brug af Path.cwd()
  • Ved brug af os.getcwd()
  • Brug af pathlib.Path().absolute()
  • Bruger os. sti.basenavn
  • Ved brug af os.path.abspath

Find stien til den givne fil ved hjælp af Path.cwd()

Her har ideen om Current Working Directory (CWD) en vigtig plads. Tænk på CWD som den mappe, som Python kører i. Python antager, at filen starter i CWD, hvis den kaldes blot ved navn, så en reference kun for navn vil kun fungere, hvis filen er i Pythons CWD. Path.cwd() returnerer den aktuelle mappe.

Python3




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

Produktion:

C:Usersint.suraj.gupta 

Få den aktuelle mappe i Python med OS ved hjælp af os.getcwd()

Vi kan få den absolutte sti til den aktuelle arbejdsmappe. Så afhængigt af den anvendte version, hentes enten en relativ sti eller absolut sti. For at få det aktuelle arbejdskatalog i Python skal du bruge OS. getcwd () metode. Denne funktion i Python OS-modulet returnerer strengen, der indeholder den absolutte sti til den aktuelle arbejdsmappe.

Python3




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

Produktion:

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

Få den aktuelle mappe i Python med OS ved brug af pathlib.Path().absolute()

Denne funktion af Python OS modul returnerer strengen, der indeholder den absolutte sti til den aktuelle arbejdsmappe.

Python3




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

Produktion:

C:Usersint.suraj.gupta 

Find stien til den givne fil ved hjælp af os.path.basename

Vi kan få filnavnet og mappenavnet på den kørende fil på nedenstående måde. Det vigtigste at forstå __fil__ er, at tolken justerer det ved kørsel, så det Python ved hvilken fil det har at gøre med, når scriptet bruger flere moduler. Fordelen ved at kalde Path( file__) er, at den returnerer en streng, der indeholder stien og den fil, du i øjeblikket arbejder på.

  • Du kan kalde __fil__ mens du ændrer en fil. Som et resultat, hvis du forsøger at kalde det fra shell-fortolkeren, vil det ikke udføres.
  • __fil__ fungerer ikke i en Jupyter notesbog sammenhæng.

Python3




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

Produktion:

Find stien til den givne fil ved hjælp af os.path.abspath

Det lyder måske kompliceret, men os.path.abspath() betyder blot, at denne metode returnerer stinavnet til stien, der er angivet som et argument til denne funktion. Dokumentationen hævder, at denne metode producerer en normaliseret absolutiseret version af stinavnstien.

Eksempel 1: For at få den absolutte sti til den kørende fil.

Python3




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

Produktion:

Eksempel 2: Hvis vi angiver en absolut sti i os.path.abspath(), vil den blive returneret som den er, så hvis __file__ er en absolut sti, ingen fejl vil opstå, selvom vi indstiller 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)))>

Produktion: