os.environ
ведет себя как словарь Python, так что все общие словарные операции могут быть выполнены. В дополнении к get
и set
операциям , упомянутых в других ответах, мы можем просто проверить , если ключ существует. Ключи и значения должны храниться в виде строк .
Python 3
Для python 3 словари используют ключевое слово in вместо has_key
>>> import os
>>> 'HOME' in os.environ # Check an existing env. variable
True
...
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'
Есть одна важная вещь, которую стоит отметить при использовании 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'>