logo

Pridobite trenutni imenik v Pythonu

V tem članku bomo opisali, kako pridobiti in spremeniti delovni imenik v Pythonu. Med delom z ravnanje z datotekami morda ste opazili, da so datoteke navedene samo z njihovimi imeni, npr. »GFG.txt« in če se datoteka ne nahaja v imeniku skripta, Python prikaže napako. Koncept Trenutni delovni imenik (CWD) tukaj postane pomembno. Upoštevajte CWD kot mapo, znotraj katere deluje Python. Kadarkoli se datoteke kličejo samo po imenu, Python predpostavlja, da se začne v CWD, kar pomeni, da bo referenca samo z imenom uspešna le, če je datoteka v Pythonovem CWD.

Opomba: Mapa, v kateri se izvaja skript Python, je znana kot trenutni imenik. To morda ni pot, kjer se nahaja skript Python.



Kaj je modul Python OS?

Python ponuja modul OS za interakcijo z operacijskim sistemom. Ta modul spada pod Pythonov standardni pomožni modul. Vse funkcije v modulu os dvignejo OSError v primeru neveljavnih ali nedostopnih imen in poti datotek ali drugih argumentov, ki imajo pravilno vrsto, vendar jih operacijski sistem ne sprejema.

Python Poišči trenutni imenik

Pridobite imenik trenutnega skripta Python z uporabo sys.argv[0]

V tem primeru smo uporabili sys.argv[0] za pridobitev poti skriptne datoteke in os.path.dirname() ekstrahira trenutni imenik iz poti.

Python3








import> os> import> sys> script_directory>=> os.path.dirname(os.path.abspath(sys.argv[>0>]))> print>(script_directory)>

>

>

Izhod:

Pridobite imenik trenutnega skripta Python

Pridobite imenik trenutnega skripta Python

Pridobite imenik trenutnega skripta Python z uporabo modula Inspect

V tem primeru smo uporabili inspect.getfile(inspect.currentframe()) ki vrne pot trenutne skriptne datoteke in os.path.dirname() ekstrahira trenutni imenik iz poti.

Python3




import> inspect> import> os> script_directory>=> os.path.dirname(os.path.abspath(> >inspect.getfile(inspect.currentframe())))> > print>(script_directory)>

>

>

Izhod:

vadnica za reakcijo js
Pridobite imenik trenutnega skripta Python

Pridobite imenik trenutnega skripta Python

Pridobite trenutni delovni imenik z os.getcwd()

V tem primeru smo uporabili os.getcwd() da dobite trenutni imenik skripta Python.

Python3




import> os> > print>(>'File location using os.getcwd():'>, os.getcwd())>

>

>

Izhod:

File location using os.getcwd(): /home/tuhingfg/Documents/Scripts>

Opomba: Uporaba os.getcwd() ne deluje po pričakovanjih pri izvajanju kode Python iz drugega imenika iz skripta Python.

Nepričakovan rezultat pri izvajanju skripta Python iz drugega imenika, ki ni skript z uporabo os.getcwd()

Skript Python je nameščen znotraj /home/tuhingfg/Documents/Scripts . Ko zaženemo skript iz iste mape, poda pravilno lokacijo skripta. Ko pa naš imenik spremenimo na drugo mesto, izpiše lokacijo tega imenika. To je zato, ker os.getcwd() upošteva imenik, iz katerega izvajamo skript. Na podlagi tega je rezultat os.getcwd() tudi spreminja.

Python3




import> os> > print>(>'File location using os.getcwd():'>, os.getcwd())>

>

>

Izhod:

Pridobite lokacijo skripta z uporabo os.getcwd()

Pridobite lokacijo skripta z uporabo os.getcwd()

Pridobite lokacijo skripta Python z metodo os.path.realpath().

os.path.realpath() lahko uporabite za pridobitev poti trenutnega skripta Python. Pravzaprav se metoda os.path.realpath() v Pythonu uporablja za pridobitev kanonične poti podanega imena datoteke z odstranitvijo vseh simbolnih povezav, ki se pojavijo na poti. Posebna spremenljivka __mapa__ se prenese na realpath() metoda za pridobitev poti skripta Python.

V tem primeru je os.getcwd() in __mapa__ zagotoviti dva različna rezultata. Ker izvajamo skript iz druge mape kot skript, os.getcwd() izhod se je spremenil glede na mapo izvajanja skripta. Ampak __mapa__ generira konstanten rezultat ne glede na trenutni delovni imenik.

Python3




import> os> > print>(>'File location using os.getcwd():'>,> >os.getcwd())> > print>(f>'File location using __file__ variable:'>+> >'{os.path.realpath(os.path.dirname(__file__))}'>)>

>

podčrtaj s css
>

Izhod:

Pridobite imenik Python

Pridobite imenik s Pythonom

Opomba: __datoteka__ je ime poti do datoteke, iz katere je bil modul naložen, če je bil naložen iz datoteke.