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 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 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 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ář s Pythonem
Poznámka: __file__ je cesta k souboru, ze kterého byl modul načten, pokud byl načten ze souboru.