os.environ
ведет себя как словарь Python, поэтому можно выполнять все обычные словарные операции. В дополнение к операциям get
и set
, упомянутым в других ответах, мы также можем просто проверить, существует ли ключ
Python 2
>>> import os
>>> os.environ.has_key('HOME') # Check an existing env. variable
True
>>> os.environ.has_key('FOO') # Check for a non existing variable
False
>>> os.environ['FOO'] = '1' # Set a new env. variable (String value)
>>> os.environ.has_key('FOO')
True
>>> os.environ.get('FOO') # Retrieve the value
'1'
Python 3
Для python 3 в словарях используется ключевое слово in вместо has_key
>>> import os
>>> 'HOME' in os.environ # Check an existing env. variable
True
...
При использовании os.environ
следует отметить одну важную вещь:
Хотя дочерние процессы наследуют среду от родительского процесса, я недавно столкнулся с проблемой и выяснил, если у вас есть другие сценарии, обновляющие среду во время работы вашего сценария python, повторный вызов os.environ
не будет отражают последние значения .
Выдержка из документов :
Это отображение фиксируется при первом импорте модуля os,
обычно во время запуска Python как часть обработки site.py. изменения
в окружающую среду, сделанные после этого времени, не отражены в
os.environ, за исключением изменений, внесенных путем непосредственного изменения os.environ.
os.environ.data
, в котором хранятся все переменные среды, является объектом dict, который содержит все значения среды:
>>> type(os.environ.data) # changed to _data since v3.2 (refer comment below)
<type 'dict'>