这种行为是如何解释的?
import os
print os.environ.keys()
列出其密钥中的PATH
:
import os
print os.environ["PATH"]
给出错误:
NameError: name 'PATH' is not defined
此外,上面的代码在python环境中编写后工作正常。
如图所示,我为用户和系统定义了一个PATH环境变量(通过控制面板)。
操作系统是Windows Server 2008
答案 0 :(得分:2)
这是因为您在引号内使用了引号。
您可以将其转义或替换为分号。
$ python -c "import os; print os.environ['PATH']"
/Library/Frameworks/Python.framework/Versions/3.5/bin:/Users/[...]
答案 1 :(得分:2)
你遇到的问题是你在{"导入..."
包围的行中打印["PATH"]
这不是Python问题,它是一个shell问题(在本例中是来自Windows的CMD.exe)。 "import
双引号开始一个字符串。字符串一直持续到它看到双引号 - 就在PATH之前。所以你结束了
quoted string: import os; print os.environ[
unquoted string: PATH
quoted string: ]
所有这些都粘在一起产生:
import os; print os.environ[PATH]
注意,PATH周围没有引号? Python看到了这一点,并寻找符号PATH,它没有被定义。所以它会输出一个错误。
正如@Tomasz Kajtoch指出的那样,你可以通过"逃避"来解决这个问题。您使用的报价,或转换报价的风格:
python -c "import os; print os.environ[\"PATH\"]"
或强>
python -c "import os; print os.eniron['PATH']"
答案 2 :(得分:1)
我认为您正在尝试将Path作为列表元素传递给environ.But,因为environ是类,就像您在print中所做的那样os.environ.keys()具有成员函数而不是列表。 希望这会有所帮助。