Lire les variables d'environnement système avec python-partie 1

Aperçu / objectif

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.

Creuser en profondeur sur os.environ

ʻ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 des variables d'environnement système

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
>>>

Pour mettre à jour les variables d'environnement système

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.

Citation Os.putenv

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

Lire les variables d'environnement système avec python-partie 1
Lire les variables d'environnement système avec python-partie 2
Définir des variables d'environnement avec lambda-uploader
Variables shell, variables d'environnement
environnement python avec docker-compose
[Pour les débutants] Lire les informations d'authentification DB à partir des variables d'environnement
Lire Excel avec openpyxl
Environnement virtuel avec Python 3.6
accès mongodb avec pymongo
[Note] Faites fonctionner MongoDB avec Python
Principes de base pour toucher MongoDB avec MongoEngine
Manipuler des chaînes avec un groupe pandas par
Lire les variables d'environnement système avec python-partie 1
Lire les variables d'environnement système avec python-partie 2
Variables d'environnement lors de l'utilisation de Tkinter
Lire csv avec des pandas python
Environnement toxique facile avec Jenkins
Lire les coordonnées de l'image avec Python-matplotlib
Gérer les variables d'environnement Go (viper)
Créer un environnement avec virtualenv
Environnement de site Web de configuration minimale avec django
Installer l'environnement Python avec Anaconda
Gérez l'environnement python avec virtualenv
Que sont les variables d'environnement? (Linux)
Environnement Venv avec Windows PowerShell
Gérer les variables d'environnement en Python
Créer un environnement python3 avec ubuntu 16.04
Variables d'environnement HTTP dans Flask
Préparer l'environnement python3 avec Docker
Construire un environnement python avec direnv
Système de support de présentation avec Python3
Changer d'environnement virtuel avec jupyter
Lire des données json avec python