logo

Gaukite dabartinį katalogą Python

Šiame straipsnyje aptarsime, kaip gauti ir pakeisti darbinį katalogą „Python“. Dirbant su failų tvarkymas galbūt pastebėjote, kad failai nurodomi tik pagal jų pavadinimus, pvz. „GFG.txt“ ir jei failo nėra scenarijaus kataloge, Python iškelia klaidą. Koncepcija Dabartinis darbo katalogas (CWD) čia tampa svarbus. Apsvarstykite CWD kaip aplanką, viduje veikia Python. Kai failai iškviečiami tik jų vardu, Python daro prielaidą, kad jis prasideda CWD, o tai reiškia, kad nuoroda tik su pavadinimu bus sėkminga tik tuo atveju, jei failas yra Python CWD.

Pastaba: Aplankas, kuriame veikia Python scenarijus, yra žinomas kaip dabartinis katalogas. Tai gali būti ne kelias, kuriame yra Python scenarijus.



Kas yra Python OS modulis?

Python suteikia OS modulis sąveikai su operacine sistema. Šis modulis patenka į standartinį Python paslaugų modulį. Visos OS modulio funkcijos pakeliamos OSE klaida netinkamų ar nepasiekiamų failų pavadinimų ir kelių ar kitų argumentų, kurių tipas yra teisingas, bet kurių operacinė sistema nepriima, atveju.

Python Raskite dabartinį katalogą

Gaukite dabartinio Python scenarijaus katalogą naudodami sys.argv[0]

Šiame pavyzdyje mes naudojome sys.argv[0] norėdami gauti scenarijaus failo kelią ir os.path.dirname() ištraukia dabartinį katalogą iš kelio.

Python3








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

>

>

Išvestis:

Gaukite dabartinio Python scenarijaus katalogą

Gaukite dabartinio Python scenarijaus katalogą

Gaukite dabartinio Python scenarijaus katalogą naudodami tikrinimo modulį

Šiame pavyzdyje mes naudojome inspect.getfile(patikrinti.currentframe()) kuris grąžina dabartinio scenarijaus failo kelią ir os.path.dirname() ištraukia dabartinį katalogą iš kelio.

Python3




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

>

>

Išvestis:

praleisti sąrašą
Gaukite dabartinio Python scenarijaus katalogą

Gaukite dabartinio Python scenarijaus katalogą

Gaukite dabartinį darbo katalogą naudodami os.getcwd()

Šiame pavyzdyje mes naudojome os.getcwd() Norėdami gauti dabartinį Python scenarijaus katalogą.

Python3




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

>

>

Išvestis:

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

Pastaba: Naudojant os.getcwd() neveikia taip, kaip tikėtasi, kai Python kodas vykdomas iš kito katalogo nei Python scenarijus.

Netikėtas rezultatas paleidžiant Python scenarijų iš kito katalogo, išskyrus scenarijų naudojant os.getcwd()

Python scenarijus yra viduje /home/tuhingfg/Documents/Scripts . Kai paleidžiame scenarijų iš to paties aplanko, jis nurodo teisingą scenarijaus vietą. Bet kai mes pakeičiame savo katalogą į kitą vietą, išvedame to katalogo vietą. Tai yra, nes os.getcwd() atsižvelgia į katalogą, iš kurio vykdome scenarijų. Remiantis tuo, rezultatas os.getcwd() taip pat skiriasi.

Python3




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

>

>

Išvestis:

Gaukite scenarijaus vietą naudodami os.getcwd()

Gaukite scenarijaus vietą naudodami os.getcwd()

Gaukite Python scenarijaus vietą naudodami os.path.realpath() metodą

os.path.realpath() gali būti naudojamas norint gauti dabartinio Python scenarijaus kelią. Tiesą sakant, Python metodas os.path.realpath() naudojamas norint gauti nurodyto failo pavadinimo kanoninį kelią, pašalinant visas kelyje aptiktas simbolines nuorodas. Ypatingas kintamasis __failas__ perduodama į realpath() būdas gauti Python scenarijaus kelią.

Šiame pavyzdyje os.getcwd() ir __failas__ pateikti du skirtingus rezultatus. Kadangi vykdome scenarijų iš kito aplanko nei scenarijus, os.getcwd() išvestis pasikeitė atsižvelgiant į scenarijaus vykdymo aplanką. Bet __failas__ generuoja pastovų rezultatą, neatsižvelgiant į esamą darbo katalogą.

Python3

np.argmax




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

>

>

Išvestis:

Gaukite Python katalogą

Gaukite katalogą naudodami Python

Pastaba: __failas__ yra failo, iš kurio buvo įkeltas modulis, kelio pavadinimas, jei jis buvo įkeltas iš failo.