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.environwill not reflect the latest values .
8 回答
您应该将字符串值分配给环境变量 .
os.environ["DEBUSSY"] = "1"
如果您想阅读或打印环境变量,请使用
print os.environ["DEBUSSY"]
此更改仅对分配给它的当前进程有效,不会永久更改该值 . 子进程将自动继承父进程的环境 .
当您使用环境变量(添加/修改/删除变量)时,一个好的做法是在功能完成时恢复先前的状态 .
您可能需要像question中描述的
modified_environ
上下文管理器那样恢复环境变量 .经典用法:
您可能需要考虑代码稳健性的其他方面;
当您将整数值变量存储为环境变量时,请尝试
然后进行检索,考虑到为了避免错误,你应该试试
可能用'-1'代替'未设置'
所以,把所有这些放在一起
os.environ
的行为类似于python字典,因此可以执行所有常见的字典操作 . 除了其他答案中提到的get
和set
操作之外,我们还可以简单地检查是否存在密钥Python 2
Python 3
对于python 3,字典使用in关键字而不是has_key
关于使用
os.environ
,有一点需要注意:虽然子进程从父进程继承环境,但我最近遇到了一个问题并且想通了,如果在python脚本运行时有其他脚本更新环境,请再次调用
os.environ
will not reflect the latest values .摘录自docs:
存储所有环境变量的
os.environ.data
是一个dict对象,它包含所有环境值:os.environ["DEBUSSY"] = '1'
怎么样?环境变量总是字符串 .环境变量必须是字符串,所以使用
将变量
DEBUSSY
设置为字符串1
. 要稍后访问此变量,只需使用子进程自动继承父进程的环境 - 您无需执行任何特殊操作 .
您可以使用
os.environ
字典访问环境变量 .现在,我遇到的一个问题是,如果我尝试使用
os.system
运行一个设置环境变量的批处理文件(使用** . bat *文件中的SET命令),它就不会真正为你的python环境设置它们(但是对于使用os.system
函数创建的子进程) . 要实际获取python环境中设置的变量,我使用以下脚本:然后做
只需使用
os.environ["DEBUSSY"]
,如