logo

Få gjeldende katalog i Python

I denne artikkelen vil vi dekke hvordan du får og endrer arbeidskatalogen i Python. Mens du jobber med filhåndtering du har kanskje lagt merke til at filer kun refereres til ved navn, f.eks. 'GFG.txt' og hvis filen ikke er plassert i katalogen til skriptet, gir Python en feilmelding. Konseptet med Current Working Directory (CWD) blir viktig her. Betrakt CWD som mappen, Python opererer inne. Når filene bare kalles med navnet, antar Python at den starter i CWD, noe som betyr at en referanse kun for navn vil være vellykket bare hvis filen er i Pythons CWD.

Merk: Mappen der Python-skriptet kjører er kjent som Current Directory. Dette er kanskje ikke banen der Python-skriptet er plassert.



Hva er Python os-modulen?

Python gir en os-modul for samhandling med operativsystemet. Denne modulen kommer under Pythons standard verktøymodul. Alle funksjoner i os-modulen heves OSFeil i tilfelle ugyldige eller utilgjengelige filnavn og stier, eller andre argumenter som har riktig type, men som ikke aksepteres av operativsystemet.

Python Finn gjeldende katalog

Få en katalog over det gjeldende Python-skriptet ved å bruke sys.argv[0]

I dette eksemplet har vi brukt sys.argv[0] for å hente banen til skriptfilen og os.path.dirname() trekker ut gjeldende katalog fra banen.

Python3








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

>

>

Utgang:

Få katalog med gjeldende Python-skript

Få en katalog med det gjeldende Python-skriptet

Få katalogen til det gjeldende Python-skriptet ved å bruke Inspect Module

I dette eksemplet har vi brukt inspect.getfile(inspect.currentframe()) som returnerer banen til gjeldende skriptfil, og os.path.dirname() trekker ut gjeldende katalog fra banen.

Python3




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

>

>

Utgang:

java binært tre
Få katalog med gjeldende Python-skript

Få katalog med gjeldende Python-skript

Få den gjeldende arbeidskatalogen ved å bruke os.getcwd()

I dette eksemplet har vi brukt os.getcwd() for å få gjeldende katalog med Python-skript.

Python3




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

>

>

Utgang:

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

Merk: Ved hjelp av os.getcwd() fungerer ikke som forventet når du kjører Python-koden fra en annen katalog enn Python-skriptet.

Uventet resultat når du kjører Python-skript fra en annen katalog enn skript ved hjelp av os.getcwd()

Python-skriptet er plassert inne /home/tuhingfg/Documents/Scripts . Når vi kjører skriptet fra innsiden av samme mappe, gir det riktig skriptplassering. Men når vi endrer katalogen vår til et annet sted, viser den plasseringen til den katalogen. Dette er fordi os.getcwd() vurderer katalogen der vi kjører skriptet. Basert på dette er resultatet av os.getcwd() varierer også.

Python3


forskjellen mellom firma og selskap



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

>

>

Produksjon:

Få skriptplassering ved å bruke os.getcwd()

Få skriptplassering ved å bruke os.getcwd()

Få Python-skriptets plassering ved å bruke os.path.realpath()-metoden

os.path.realpath() kan brukes til å få banen til det gjeldende Python-skriptet. Faktisk brukes os.path.realpath()-metoden i Python for å få den kanoniske banen til det angitte filnavnet ved å eliminere eventuelle symbolske lenker som oppstår i banen. En spesiell variabel __fil__ overføres til realpath() metode for å få banen til Python-skriptet.

I dette eksemplet er os.getcwd() og __fil__ gi to forskjellige resultater. Siden vi kjører skriptet fra en annen mappe enn skriptet, os.getcwd() output har endret seg i henhold til mappen for utførelse av skriptet. Men __fil__ genererer det konstante resultatet uavhengig av gjeldende arbeidskatalog.

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__))}'>)>

>

>

Produksjon:

Få Python-katalogen

Få en katalog med Python

Merk: __fil__ er banenavnet til filen som modulen ble lastet fra hvis den ble lastet fra en fil.