Ce face os.environ și os.getenv()
os.environ este un dicționar cu variabilele de mediu ale procesului. Citești cu os.environ["NUME"] (aruncă KeyError dacă lipsește) sau cu os.getenv("NUME", implicit). Modificările din os.environ se văd și în programele pornite ulterior cu subprocess. os.getenvb() citește ca bytes (doar Unix).
putenv() și unsetenv() schimbă mediul la nivel de sistem fără să actualizeze os.environ, deci este mai bine să modifici direct dicționarul. get_exec_path() returnează lista directoarelor din PATH. reload_environ() (3.14+) reîncarcă os.environ după modificări făcute din afara lui Python.
Variabilele de mediu sunt locul potrivit pentru parole și chei API: nu le scrie în cod.
Parametri
| Parametru | Descriere |
|---|---|
NUME / key |
Numele variabilei. |
implicit / default |
Valoarea returnată de getenv dacă variabila lipsește. |
Ce returnează
Textul variabilei, valoarea implicită sau None.
Exemple
Exemplul 1: Configurare din mediu
import os
os.environ["APP_PORT"] = "8080"
port = int(os.getenv("APP_PORT", "80"))
debug = os.getenv("APP_DEBUG", "nu") == "da"
print(port, debug)
print("APP_PORT" in os.environ, os.environ.get("CHEIE_API"))
del os.environ["APP_PORT"]
print(os.getenv("APP_PORT"))
Rezultat
8080 False
True None
None
Exemplul 2: PATH și celelalte funcții
import os
print(os.get_exec_path({"PATH": "/usr/local/bin:/usr/bin"}))
os.putenv("DOAR_SISTEM", "1")
print("DOAR_SISTEM" in os.environ)
os.environ["TEST_B"] = "ă"
print(os.getenvb(b"TEST_B"))
os.unsetenv("DOAR_SISTEM")
os.reload_environ()
print("TEST_B" in os.environ)
Rezultat
['/usr/local/bin', '/usr/bin']
False
b'\xc4\x83'
True
Greșeli frecvente
- Pui un număr în
os.environ:os.environ["PORT"] = 8080dăTypeError: str expected. Valorile sunt întotdeauna texte. - Citești cu
os.environ["CHEIE"]o variabilă care poate lipsi și programul se oprește cuKeyError. Foloseșteos.getenvcu valoare implicită.
Comenzi înrudite
os.path.expanduser() și os.path.expandvars(): Înlocuiesc ~ cu directorul utilizatorului și $VARIABILA cu valoarea variabilei de mediu.subprocess.run(): Pornește un program extern, așteaptă să se termine și îi returnează rezultatul.os.name, os.sep, os.linesep și celelalte constante: Constante care descriu sistemul de operare: numele, separatorul de căi, capătul de rând.