Umgebungsvariablen und Pythons os-Modul

In diesem Artikel werfen wir einen Blick auf das Python Modul os. Dieses Modul dient der Interaktion mit dem Betriebssystem. Durch die Verwendung von os bieten sich viele interessante Möglichkeiten, auf betriebssystemspezifische Informationen bzw. Elemente zuzugreifen. Dementsprechend viel ließe sich zu diesem Modul schreiben. Da es sich hier aber lediglich um eine Einführung handelt, begrenze ich dieses Tutorial auf das Thema Umgebungsvariablen. Es sei darauf hingewiesen, dass für nachfolgende Beispiele Python 3.12 verwendet wurde.

Um das os-Modul nutzen zu können, muss es importiert werden. Außerdem importiere ich pprint, um eine bessere Ausgabe zu erhalten.

import os
import pprint

Um sich eine Übersicht über die existierenden Umgebungsvariablen zu verschaffen, steht os.environ zur Verfügung. Die Ausgabe der Werte übernimmt dann pprint.

system_env = os.environ
pprint.pprint(dict(system_env))

Wie zu erkennen ist, erhalten wir mit os.environ ein Dictionary, also Schlüssel-Wert-Paare mit den Variablennamen als Schlüssel und die dazugehörigen Werte. Nun wird man nicht alle Werte benötigen, sondern sich nur für die Werte bestimmter Variablen interessieren. Sehen wir uns also an, wie wir uns gezielt einige Umgebungsvariablen anzeigen lassen können. Es sei angemerkt, dass im folgenden Beispiel auf einem Windows-System lediglich der Wert für LANG ausgegeben werden kann.

# Show home directory
print(system_env["HOME"])

# Show user
print(system_env["USER"])

# Show language
print(system_env["LANG"])

# Show shell
print(system_env["SHELL"])

Windows-Nutzer könnten sich die Werte folgender Umgebungsvariablen anzeigen lassen:

# Show home directory
print(system_env["WINDIR"])

# Show user
print(system_env["USERNAME"])

# Show language
print(system_env["LANG"])

# Show used shell
print(system_env["OS"])

Nun besteht die Möglichkeit, dass der Wert einer Variable festgestellt werden soll, die gar nicht existiert. Deswegen kann eine Ausnahmebehandlung sinnvoll sein. Im folgenden Beispiel soll der Wert für „BASH“ abgefragt werden. Dies führt aber zu einer Fehlermeldung, da auf dem betreffenden System die Z-Shell verwendet wird:

try:
    print(system_env["BASH"])
except KeyError as e:
    print("ERROR: Environment variable does not exist!")
    print(e)

Alternativ kann auch os.environ.get() verwendet werden. Damit erhält man den korrespondierenden Wert oder None, falls die Variable nicht vorhanden ist.

print(os.environ.get("BASH"))  # -> None

Eine Umgebungsvariable kann auch gesetzt bzw. überschrieben werden. Es ist aber zu bedenken, dass dies nicht dauerhaft ist.

os.environ["MY_KEY"] = "Test"

print(system_env["MY_KEY"])  # -> Test

Das soll es als Überblick zu os.environ gewesen sein. Weitere Informationen gibt es in der offiziellen Python-Dokumentation:

os — Miscellaneous operating system interfaces