Utilisez ʻos.environ` pour obtenir les variables d'environnement système. Les informations de réglage utilisées dans l'application peuvent être écrites dans le fichier de réglage, etc. et DI peut être effectuée. S'il existe de nombreux fichiers de configuration ou si l'état du développement (develop-staging-release) est compliqué Les coûts de maintenance augmentent et les risques d'erreurs augmentent. J'ai pensé qu'il serait possible de réduire le coût de maintenance du fichier de configuration en conservant les informations de configuration dans la variable d'environnement système. J'ai examiné un programme qui utilise des variables d'environnement système.
ʻOs.environ` contient les variables d'environnement système sous forme de dictionnaire. Vous pouvez vous référer aux variables d'environnement système jusqu'à ce que python soit exécuté. bibliothèque os
Pour obtenir la variable d'environnement système, spécifiez le nom de la variable d'environnement système dans ʻos.environ. Le résultat est le même que le
SET% nom de la variable d'environnement système%` exécuté sur l'invite de commande.
$ 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 se produit lorsqu'un nom de variable d'environnement système qui n'existe pas est spécifié.
$ 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'
>>>
Utilisez ʻos.getenv (key, default = value) ʻsi vous ne voulez pas qu'une exception se produise pour un nom de variable d'environnement système qui n'existe pas.
Si la clé n'existe pas, la valeur spécifiée de «default» est renvoyée. Si «default» n'est pas spécifié, ce sera «Aucun».
La même chose s'applique à ʻos.environ.get (key) . ʻOs.getenv (key, default = value)
est un alias pour ʻos.environ.get (key)`.
$ 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
>>>
Puisque ʻos.environest un type de dictionnaire, il suffit de définir les variables et les valeurs d'environnement système Si le nom de la variable d'environnement système n'existe pas, il sera ajouté et s'il existe, il sera écrasé. Pour le supprimer, utilisez l'instruction del.
del os.environ [nom de la variable d'environnement système]`
$ 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'
>>>
Il existe également une fonction qui définit les variables d'environnement système sans modifier directement ʻos.environ. Vous pouvez ajouter ou mettre à jour des variables d'environnement système avec
putenv (key, value), qui est associé à
getenv`, mais la documentation officielle a une telle note.
Si putenv () est pris en charge, une affectation à un élément dans os.environ le convertira automatiquement en l'appel correspondant à putenv (). Si vous appelez directement putenv (), os.environ ne sera pas mis à jour, il est donc préférable de l'attribuer à un élément dans os.environ. Envoyez l'événement d'audit os.putenv avec la clé et la valeur des arguments.
Cela semble être un bogue que la variable d'environnement système mise à jour par putenv ()
ne soit pas reflétée dans ʻos.environ`, mais vous pouvez la gérer avec des données de type dictionnaire.
Recommended Posts