Š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ą 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 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 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 katalogą naudodami Python
Pastaba: __failas__ yra failo, iš kurio buvo įkeltas modulis, kelio pavadinimas, jei jis buvo įkeltas iš failo.