logo

Získajte aktuálny adresár v Pythone

V tomto článku sa budeme zaoberať Ako získať a zmeniť pracovný adresár v Pythone. Pri práci s manipulácia so súbormi možno ste si všimli, že na súbory sa odkazuje iba ich názvami, napr. „GFG.txt“ a ak sa súbor nenachádza v adresári skriptu, Python zobrazí chybu. Pojem Aktuálny pracovný adresár (CWD) sa tu stáva dôležitým. Považujte CWD za priečinok, vo vnútri funguje Python. Vždy, keď sa súbory volajú iba podľa ich mena, Python predpokladá, že začína v CWD, čo znamená, že odkaz len na názov bude úspešný iba vtedy, ak je súbor v CWD Pythonu.

Poznámka: Priečinok, v ktorom je spustený skript Python, sa nazýva aktuálny adresár. Toto nemusí byť cesta, kde sa nachádza skript Python.



Čo je modul Python os?

Python poskytuje os modul na interakciu s operačným systémom. Tento modul patrí do štandardného pomocného modulu Pythonu. Všetky funkcie v module OS sa zvyšujú OSError v prípade neplatných alebo neprístupných názvov súborov a ciest alebo iných argumentov, ktoré majú správny typ, ale nie sú akceptované operačným systémom.

Python Nájsť aktuálny adresár

Získajte adresár aktuálneho skriptu Python pomocou sys.argv[0]

V tomto príklade sme použili sys.argv[0] na získanie cesty k súboru skriptu a os.path.dirname() extrahuje aktuálny adresár z cesty.

Python3








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

>

>

Výkon :

Získajte adresár aktuálneho skriptu Python

Získajte adresár aktuálneho skriptu Python

Získajte adresár aktuálneho skriptu Python pomocou modulu Inspect

V tomto príklade sme použili inspect.getfile(inspect.currentframe()) ktorý vráti cestu k aktuálnemu súboru skriptu a os.path.dirname() extrahuje aktuálny adresár z cesty.

Python3




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

>

>

Výkon :

spať v js
Získajte adresár aktuálneho skriptu Python

Získajte adresár aktuálneho skriptu Python

Získajte aktuálny pracovný adresár pomocou os.getcwd()

V tomto príklade sme použili os.getcwd() získať aktuálny adresár skriptu Python.

Python3




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

>

>

Výkon :

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

Poznámka: Použitím os.getcwd() nefunguje podľa očakávania pri spustení kódu Python z iného adresára ako skript Python.

Neočakávaný výsledok pri spustení skriptu Python z iného adresára ako skript pomocou os.getcwd()

Vnútri je umiestnený skript Python /home/tuhingfg/Documents/Scripts . Keď spustíme skript z toho istého priečinka, poskytne správne umiestnenie skriptu. Ale keď zmeníme náš adresár na iné miesto, zobrazí sa umiestnenie tohto adresára. To je preto, že os.getcwd() berie do úvahy adresár, z ktorého spúšťame skript. Na základe toho výsledok os.getcwd() sa tiež líši.

Python3




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

>

>

Výkon:

Získajte umiestnenie skriptu pomocou os.getcwd()

Získajte umiestnenie skriptu pomocou os.getcwd()

Získajte umiestnenie skriptu Python pomocou metódy os.path.realpath().

os.path.realpath() možno použiť na získanie cesty k aktuálnemu skriptu Python. V skutočnosti sa metóda os.path.realpath() v Pythone používa na získanie kanonickej cesty zadaného názvu súboru odstránením akýchkoľvek symbolických odkazov, ktoré sa v ceste vyskytujú. Špeciálna premenná __file__ sa odovzdáva do realpath() metóda na získanie cesty skriptu Python.

V tomto príklade os.getcwd() a __file__ poskytnúť dva rôzne výsledky. Keďže skript spúšťame z iného priečinka ako skript, os.getcwd() výstup sa zmenil podľa priečinka vykonávania skriptu. ale __file__ generuje konštantný výsledok bez ohľadu na aktuálny pracovný adresár.

Python3

zapuzdrenie java




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

>

>

Výkon:

Získajte adresár Pythonu

Získajte adresár pomocou Pythonu

Poznámka: __file__ je cesta k súboru, z ktorého bol modul načítaný, ak bol načítaný zo súboru.