logo

Raskite kelią į nurodytą failą naudodami Python

Vykdomo scenarijaus failo .py vietą (kelią) galime gauti naudodami __file__. __failas__ yra naudinga skaitant kitus failus ir nurodo dabartinę veikiančio failo vietą. Jis skiriasi versijomis. Python 3.8 ir ankstesnėse versijose __file__ grąžina kelią, nurodytą vykdant Python komandą.

Mes galime gauti santykinį kelią, jei nurodytas santykinis kelias. Jei nurodome absoliutų kelią, grąžinamas absoliutus kelias. Tačiau Python 3.9 ir vėlesnėse versijose __file__ visada pateikia absoliutų kelią, the OS modulis teikia įvairias komunalines paslaugas.

Būdai, kaip gauti dabartinį Python katalogą naudojant OS

Yra daug būdų, kaip gauti dabartinį Python katalogą naudojant OS. Čia mes naudojame kai kuriuos dažniausiai naudojamus būdus, kaip gauti dabartinį Python katalogą su toliau nurodyta OS.



  • Naudojant Path.cwd()
  • Naudojant os.getcwd()
  • Naudojant pathlib.Path().absolute()
  • Naudojant os. kelias.pagrindinis pavadinimas
  • Naudojant os.path.abspath

Raskite kelią į nurodytą failą naudodami Path.cwd()

Čia svarbią vietą užima dabartinio darbo katalogo (CWD) idėja. Pagalvokite apie CWD kaip aplanką, kuriame veikia Python. Python daro prielaidą, kad failas paleidžiamas CWD, jei jis iškviečiamas tiesiog vardu, todėl nuoroda tik su pavadinimu veiks tik tuo atveju, jei failas yra Python CWD. Path.cwd() grąžina dabartinį katalogą.

Python3




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

>

>

Išvestis:

C:Usersint.suraj.gupta>

Gaukite dabartinį Python katalogą naudodami OS naudojant os.getcwd()

Galime gauti absoliutų dabartinio darbo katalogo kelią. Taigi, priklausomai nuo naudojamos versijos, gaunamas santykinis arba absoliutus kelias. Norėdami gauti dabartinį darbo katalogą Python, naudokite os. getcwd () metodas. Ši Python OS modulio funkcija grąžina eilutę, kurioje yra absoliutus kelias į dabartinį darbo katalogą.

Python3




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

>

>

Išvestis:

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

Gaukite dabartinį Python katalogą naudodami OS naudojant pathlib.Path().absolute()

Ši Python funkcija OS modulis grąžina eilutę, kurioje yra absoliutus kelias į dabartinį darbo katalogą.

Python3




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

>

>

Išvestis:

C:Usersint.suraj.gupta>

Raskite kelią į nurodytą failą naudodami os.path.basename

Failo pavadinimą ir veikiančio failo katalogo pavadinimą galime gauti toliau nurodytu būdu. Svarbiausia suprasti __failas__ yra tai, kad vertėjas jį pakoreguoja vykdymo metu taip, kad Python žino, su kuriuo failu jis susiduria, kai scenarijus naudoja kelis modulius. Path (failas__) iškvietimo pranašumas yra tas, kad jis grąžina eilutę, kurioje yra kelias ir failas, su kuriuo šiuo metu dirbate.

  • Keisdami failą galite skambinti __file__. Dėl to, jei bandysite jį iškviesti iš apvalkalo vertėjo, jis nebus vykdomas.
  • __file__ neveikia a Jupyter užrašų knygelė kontekste.

Python3

maiša duomenų struktūroje




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

>

>

Išvestis:

Raskite kelią į nurodytą failą naudodami os.path.abspath

Tai gali atrodyti sudėtinga, bet os.path.abspath() tiesiog reiškia, kad šis metodas grąžina kelio pavadinimą, pateiktą kaip šios funkcijos argumentas. Dokumentuose teigiama, kad šis metodas sukuria normalizuotą absoliutinę kelio pavadinimo kelio versiją.

1 pavyzdys: Norėdami gauti absoliutų vykdomo failo kelią.

Python3




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

>

>

Išvestis:

2 pavyzdys: Jei nurodysime absoliutų kelią os.path.abspath(), jis bus grąžintas toks, koks yra, taigi, jei __file__ yra absoliutus kelias, jokia klaida neįvyks, net jei nustatysime os.path. abspatas (__failas__)

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

>

>

Išvestis: