我需要以独立于平台的方式访问进程的环境块.
蟒蛇os模块文档没有指定有关的大小写什么os.environ/ os.getenv.在我的ubuntu和win7开发盒上进行试验,我看到os.environ在Linux上区分大小写但在Windows上不区分(这反映了set两个平台上的行为)
由于dict对于字符串键显然是区分大小写的,所以返回的值似乎os.environ只是作为dict的鸭子类型 ...
问题: 在哪里/如何能够找到关于此行为的明确答案?我宁愿有一个真正的答案,而不仅仅是凭经验确定它:)
或者,os.getenv(...)是一个更好的api使用?为什么?
谢谢!
Mar*_*ers 11
如果文档未指定行为并且您希望自己发现答案,则可以查看源代码.在这种情况下,您可以os.py在http://svn.python.org/上获取在线源代码:
代码中的评论说:
elif name in ('os2', 'nt'): # Where Env Var Names Must Be UPPERCASE
# But we store them as upper case
# ...
else: # Where Env Var Names Can Be Mixed Case
# ...
Run Code Online (Sandbox Code Playgroud)
您还可以看到实现中的差异 - key.upper()而不是key在Windows上使用:
Linux的:
def __setitem__(self, key, item):
putenv(key, item)
self.data[key] = item
Run Code Online (Sandbox Code Playgroud)
视窗:
def __setitem__(self, key, item):
putenv(key, item)
self.data[key.upper()] = item
Run Code Online (Sandbox Code Playgroud)