logo

Získejte aktuální adresář v Pythonu

V tomto článku se budeme zabývat tím, jak získat a změnit pracovní adresář v Pythonu. Při práci s zpracování souborů možná jste si všimli, že na soubory se odkazuje pouze jejich názvy, např. ‘GFG.txt’ a pokud se soubor nenachází v adresáři skriptu, Python vyvolá chybu. Koncept Aktuální pracovní adresář (CWD) se zde stává důležitým. Považujte CWD za složku, uvnitř funguje Python. Kdykoli jsou soubory volány pouze jejich jménem, ​​Python předpokládá, že začíná v CWD, což znamená, že odkaz pouze na jméno bude úspěšný pouze tehdy, pokud je soubor v CWD Pythonu.

Poznámka: Složka, kde je spuštěn skript Python, se nazývá aktuální adresář. Toto nemusí být cesta, kde se nachází skript Python.



Co je modul Python os?

Python poskytuje os modul pro interakci s operačním systémem. Tento modul je součástí standardního obslužného modulu Pythonu. Všechny funkce v os modulu se zvyšují OSError v případě neplatných nebo nepřístupných názvů souborů a cest nebo jiných argumentů, které mají správný typ, ale nejsou akceptovány operačním systémem.

Python Najít aktuální adresář

Získejte adresář aktuálního skriptu Python pomocí sys.argv[0]

V tomto příkladu jsme použili sys.argv[0] k načtení cesty k souboru skriptu a os.path.dirname() extrahuje aktuální adresář z cesty.

Python3








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

>

>

Výstup :

Získejte adresář aktuálního skriptu Python

Získejte adresář aktuálního skriptu Python

Získejte adresář aktuálního skriptu Python pomocí modulu Inspect

V tomto příkladu jsme použili inspect.getfile(inspect.currentframe()) který vrací cestu k aktuálnímu souboru skriptu a os.path.dirname() extrahuje aktuální adresář z cesty.

Python3




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

>

>

Výstup :

celé číslo ve srovnání s javou
Získejte adresář aktuálního skriptu Python

Získejte adresář aktuálního skriptu Python

Získejte aktuální pracovní adresář pomocí os.getcwd()

V tomto příkladu jsme použili os.getcwd() získat aktuální adresář skriptu Python.

Python3




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

>

>

Výstup :

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

Poznámka: Použitím os.getcwd() nefunguje podle očekávání při spouštění kódu Python z jiného adresáře než skript Python.

Neočekávaný výsledek při spuštění skriptu Python z jiného adresáře, než je skript pomocí os.getcwd()

Uvnitř je umístěn skript Python /home/tuhingfg/Documents/Scripts . Když skript spustíme ze stejné složky, poskytne správné umístění skriptu. Ale když změníme náš adresář na nějaké jiné místo, zobrazí se umístění tohoto adresáře. To je proto, že os.getcwd() bere v úvahu adresář, ze kterého skript spouštíme. Na základě toho výsledek os.getcwd() se také liší.

Python3


tabulka římských číslic 1 100



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

>

>

Výstup:

Získejte umístění skriptu pomocí os.getcwd()

Získejte umístění skriptu pomocí os.getcwd()

Získejte umístění skriptu Python pomocí metody os.path.realpath().

os.path.realpath() lze použít k získání cesty aktuálního skriptu Python. Ve skutečnosti se metoda os.path.realpath() v Pythonu používá k získání kanonické cesty zadaného názvu souboru odstraněním jakýchkoli symbolických odkazů, které se v cestě vyskytují. Zvláštní proměnná __soubor__ je předán k realpath() metoda k získání cesty skriptu Python.

V tomto příkladu je os.getcwd() a __soubor__ poskytnout dva různé výsledky. Protože skript spouštíme z jiné složky než skript, os.getcwd() výstup se změnil podle složky provádění skriptu. Ale __soubor__ generuje konstantní výsledek bez ohledu na aktuální pracovní adresář.

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

>

>

Výstup:

Získejte adresář Pythonu

Získejte adresář s Pythonem

Poznámka: __file__ je cesta k souboru, ze kterého byl modul načten, pokud byl načten ze souboru.