Tässä artikkelissa käsitellään Pythonin työhakemiston hankkimista ja muuttamista. Työskennellessään kanssa tiedostojen käsittely olet ehkä huomannut, että tiedostoihin viitataan vain niiden nimillä, esim. 'GFG.txt' ja jos tiedosto ei ole komentosarjan hakemistossa, Python aiheuttaa virheen. Käsite Nykyinen työhakemisto (CWD) tulee tärkeäksi täällä. Pidä CWD:tä kansiona, Python toimii sisällä. Aina kun tiedostoja kutsutaan vain niiden nimellä, Python olettaa, että se alkaa CWD:stä, mikä tarkoittaa, että vain nimiviittaus onnistuu vain, jos tiedosto on Pythonin CWD:ssä.
Huomautus: Kansio, jossa Python-skripti on käynnissä, tunnetaan nimellä Nykyinen hakemisto. Tämä ei ehkä ole polku, jossa Python-skripti sijaitsee.
Mikä on Python os -moduuli?
Python tarjoaa os-moduuli vuorovaikutukseen käyttöjärjestelmän kanssa. Tämä moduuli tulee Pythonin vakioapumoduulin alle. Kaikki os-moduulin toiminnot korotetaan OSE-virhe virheellisten tai tavoittamattomien tiedostonimien ja polkujen tai muiden argumenttien tapauksessa, joilla on oikea tyyppi, mutta joita käyttöjärjestelmä ei hyväksy.
Python Etsi nykyinen hakemisto
Hanki nykyisen Python-skriptin hakemisto käyttämällä sys.argv[0]
Tässä esimerkissä olemme käyttäneet sys.argv[0] noutaaksesi komentosarjatiedoston polun ja os.path.dirname() purkaa nykyisen hakemiston polusta.
Python 3
import> os> import> sys> script_directory>=> os.path.dirname(os.path.abspath(sys.argv[>0>]))> print>(script_directory)> |
>
>
Lähtö:

Hanki nykyisen Python-skriptin hakemisto
Hanki nykyisen Python-skriptin hakemisto tarkastusmoduulin avulla
Tässä esimerkissä olemme käyttäneet inspect.getfile(tarkista.currentframe()) joka palauttaa nykyisen komentosarjatiedoston polun ja os.path.dirname() purkaa nykyisen hakemiston polusta.
Python 3
import> inspect> import> os> script_directory>=> os.path.dirname(os.path.abspath(> >inspect.getfile(inspect.currentframe())))> > print>(script_directory)> |
>
>
Lähtö:
toimintoja kohdassa c

Hanki nykyisen Python-skriptin hakemisto
Hanki nykyinen työhakemisto komennolla os.getcwd()
Tässä esimerkissä olemme käyttäneet os.getcwd() saadaksesi Python-komentosarjan nykyisen hakemiston.
Python 3
import> os> > print>(>'File location using os.getcwd():'>, os.getcwd())> |
>
>
Lähtö:
File location using os.getcwd(): /home/tuhingfg/Documents/Scripts>
Huomautus: Käyttämällä os.getcwd() ei toimi odotetulla tavalla, kun Python-koodi suoritetaan eri hakemistosta kuin Python-skripti.
Odottamaton tulos suoritettaessa Python-komentosarjaa muusta hakemistosta kuin komentosarjasta os.getcwd()
Python-skripti on sijoitettu sisään /home/tuhingfg/Documents/Scripts . Kun suoritamme skriptin samasta kansiosta, se antaa oikean skriptin sijainnin. Mutta kun muutamme hakemistomme johonkin muuhun paikkaan, se tulostaa kyseisen hakemiston sijainnin. Tämä johtuu siitä, että os.getcwd() ottaa huomioon hakemiston, josta suoritamme komentosarjan. Tämän perusteella tulos os.getcwd() myös vaihtelee.
Python 3
kuinka luoda satunnaislukuja javassa
import> os> > print>(>'File location using os.getcwd():'>, os.getcwd())> |
>
>
Lähtö:

Hanki komentosarjan sijainti käyttämällä os.getcwd()
Hanki Python-komentosarjan sijainti käyttämällä os.path.realpath() -menetelmää
os.path.realpath() voidaan käyttää nykyisen Python-skriptin polun hakemiseen. Itse asiassa Pythonin os.path.realpath()-menetelmää käytetään määritetyn tiedostonimen kanonisen polun saamiseen poistamalla polussa havaitut symboliset linkit. Erityinen muuttuja __tiedosto__ siirretään realpath() menetelmä Python-skriptin polun saamiseksi.
Tässä esimerkissä os.getcwd() ja __tiedosto__ antaa kaksi erilaista tulosta. Koska suoritamme komentosarjan eri kansiosta kuin komentosarja, os.getcwd() lähtö on muuttunut komentosarjan suorituskansion mukaan. Mutta __tiedosto__ luo vakiotuloksen nykyisestä työhakemistosta riippumatta.
Python 3
import> os> > print>(>'File location using os.getcwd():'>,> >os.getcwd())> > print>(f>'File location using __file__ variable:'>+> >'{os.path.realpath(os.path.dirname(__file__))}'>)> |
>
>
Lähtö:

Hanki hakemisto Pythonilla
Huomautus: __file__ on sen tiedoston polkunimi, josta moduuli ladattiin, jos se ladattiin tiedostosta.