我需要以独立于平台的方式访问进程的环境块。在
pythonos module docs没有指定os.environ
/os.getenv
的区分大小写的任何内容。在我的ubuntu和win7devbox上进行实验,我看到了操作系统环境在linux上区分大小写,但在windows上不区分大小写(这反映了set
在两个平台上的行为)
由于dict对于字符串键明显区分大小写,因此os.environ
返回的值似乎只是作为dict的duck类型的。。。在
问题: 我应该在哪里/如何才能找到关于这种行为的明确答案?我宁愿有一个真实的答案,而不只是凭经验来确定:)
或者,是操作系统.getenv(…)使用更好的api?为什么?在
谢谢!在
平台独立性通常意味着所有平台变得更糟。因此,对于独立于平台的方式,您必须假设环境变量区分大小写,但决不要试图依赖于此(即,不要故意在不同大小写中创建同名变量),而是能够处理它。否则你可能会在非Windows上搞砸。在
至于哪些平台区分大小写,哪些不区分大小写。Windows不区分大小写,Unix之类的操作系统区分大小写,请参见:
对于异国情调的操作系统,你必须检查它的文档。在
希望有帮助。在
当文档没有指定行为并且您想自己发现答案时,可以查看源代码。在这种情况下,您可以通过http://svn.python.org/在线获取
os.py
的源代码:代码中的注释说:
在Windows上,您还可以看到实现中的差异-
key.upper()
代替了key
:Linux系统:
^{pr2}$窗口:
我很难理解,标准化一个或另一个不会导致严重违反最小惊人原则。在
在windows上,程序员习惯于不区分大小写。。。为什么一个只使用windows的程序员会对这件事挑剔呢?请注意,这里没有实现区分大小写的环境变量的可能方法,该选项根本不起作用。在
在linux世界中,ENVVAR和ENVVAR是两个不同的变量,您不可能在不隐藏信息的情况下将标准化为windows机制。在
在实现的版本中,强制开发人员为跨平台应用程序指定大写或小写。在windows上,case规范是不相关的,而且对于*nix,无论如何都必须这样做。在
相关问题 更多 >
编程相关推荐