Verwenden Sie os.environ
, um Systemumgebungsvariablen abzurufen.
Die in der Anwendung verwendeten Einstellungsinformationen können in die Einstellungsdatei usw. geschrieben werden, und DI kann durchgeführt werden.
Wenn es viele Konfigurationsdateien gibt oder der Entwicklungsstatus (Develop-Staging-Release) kompliziert ist
Die Wartungskosten steigen und die Fehlerwahrscheinlichkeit steigt.
Ich dachte, dass es möglich wäre, die Wartungskosten der Einstellungsdatei zu reduzieren, indem die Einstellungsinformationen in der Systemumgebungsvariablen gehalten werden.
Ich habe ein Programm untersucht, das Systemumgebungsvariablen verwendet.
os.environ
enthält Systemumgebungsvariablen als Wörterbuch.
Sie können auf die Systemumgebungsvariablen verweisen, bis Python ausgeführt wird.
os library
Geben Sie den Namen der Systemumgebungsvariablen in os.environ
an, um die Systemumgebungsvariable abzurufen.
Das Ergebnis ist das gleiche wie der Name der SET% -Systemumgebungsvariablen%, der an der Eingabeaufforderung ausgeführt wird.
$ python
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> print(os.environ['HOMEDRIVE'])
C:
>>>
KeyError tritt auf, wenn ein nicht vorhandener Systemumgebungsvariablenname angegeben wird.
$ python
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ['TEST']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files\Python38\lib\os.py", line 673, in __getitem__
raise KeyError(key) from None
KeyError: 'TEST'
>>>
Verwenden Sie "os.getenv (Schlüssel, Standard = Wert)", wenn keine Ausnahme für einen nicht vorhandenen Systemumgebungsvariablennamen auftreten soll.
Wenn der Schlüssel nicht vorhanden ist, wird der angegebene Wert von "Standard" zurückgegeben. Wenn default
nicht angegeben ist, ist es None
.
Gleiches gilt für os.environ.get (key )
. "os.getenv (Schlüssel, Standard = Wert)" ist ein Alias für "os.environ.get (Schlüssel)".
$ python
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> value = os.getenv("TEST", "defaultvalue")
>>> print(f"TEST={value}")
TEST=defaultvalue
>>>
Da os.environ
ein Wörterbuchtyp ist, legen Sie einfach Systemumgebungsvariablen und -werte fest
Wenn der Name der Systemumgebungsvariablen nicht vorhanden ist, wird er hinzugefügt, und wenn er vorhanden ist, wird er überschrieben.
Verwenden Sie zum Löschen die Anweisung del. del os.environ [Name der Systemumgebungsvariablen]
$ python
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> value = os.environ["TEST"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files\Python38\lib\os.py", line 673, in __getitem__
raise KeyError(key) from None
KeyError: 'TEST'
>>> os.environ["TEST"] = "PYTHON"
>>> value = os.environ["TEST"]
>>> print(f"TEST={value}")
TEST=PYTHON
>>> os.environ["TEST"] = "PYTHON3"
>>> value = os.environ["TEST"]
>>> print(f"TEST={value}")
TEST=PYTHON3
>>> del os.environ["TEST"]
>>> value = os.environ["TEST"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Program Files\Python38\lib\os.py", line 673, in __getitem__
raise KeyError(key) from None
KeyError: 'TEST'
>>>
Es gibt auch eine Funktion, die Systemumgebungsvariablen festlegt, ohne os.environ
direkt zu ändern.
Sie können Systemumgebungsvariablen mit "putenv (Schlüssel, Wert)" hinzufügen oder aktualisieren, das mit "getenv" gepaart ist, aber die offizielle Dokumentation enthält einen solchen Hinweis.
Wenn putenv () unterstützt wird, wird es durch Zuweisen zu einem Element in os.environ automatisch in den entsprechenden Aufruf von putenv () konvertiert. Wenn Sie putenv () direkt aufrufen, wird os.environ nicht aktualisiert. Es ist daher besser, es einem Element in os.environ zuzuweisen. Senden Sie das Überwachungsereignis os.putenv mit den Argumenten Schlüssel und Wert.
Es scheint ein Fehler zu sein, dass die von putenv ()
aktualisierte Systemumgebungsvariable nicht in os.environ
wiedergegeben wird, aber Sie können sie mit Daten vom Wörterbuchtyp behandeln.
Recommended Posts