PATH 不是公认的环境变量,但显然存在
PATH not a recognised environ variable but clearly exists
如何解释这种行为?
import os
print os.environ.keys()
在其键中列出了 PATH
,但是:
import os
print os.environ["PATH"]
报错:
NameError: name 'PATH' is not defined
此外,上面的代码一旦在 python 环境中编写就可以正常工作。
如上所示,我已经为用户和系统(通过控制面板)定义了一个 PATH 环境变量。
OS 是 Windows Server 2008
我认为您正在尝试将 Path 作为列表元素传递给 environ.But,因为 environ 是 class,正如您在 print os.environ.keys() 中所做的那样,它具有成员函数而不是列出。
希望这有帮助。
这是因为您在引号内使用了引号。
您可以将其转义或替换为分号。
$ python -c "import os; print os.environ['PATH']"
/Library/Frameworks/Python.framework/Versions/3.5/bin:/Users/[...]
您遇到的问题是您在已经被 "import ... "
包围的行中打印 ["PATH"]
这不是 Python 问题,而是 shell 问题(在本例中,CMD.exe 来自 windows)。 "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 指出的那样,您可以通过 "escaping" 您使用的引号或切换引号的风格来解决此问题:
python -c "import os; print os.environ[\"PATH\"]"
或
python -c "import os; print os.eniron['PATH']"
如何解释这种行为?
import os
print os.environ.keys()
在其键中列出了 PATH
,但是:
import os
print os.environ["PATH"]
报错:
NameError: name 'PATH' is not defined
此外,上面的代码一旦在 python 环境中编写就可以正常工作。
如上所示,我已经为用户和系统(通过控制面板)定义了一个 PATH 环境变量。
OS 是 Windows Server 2008
我认为您正在尝试将 Path 作为列表元素传递给 environ.But,因为 environ 是 class,正如您在 print os.environ.keys() 中所做的那样,它具有成员函数而不是列出。 希望这有帮助。
这是因为您在引号内使用了引号。
您可以将其转义或替换为分号。
$ python -c "import os; print os.environ['PATH']"
/Library/Frameworks/Python.framework/Versions/3.5/bin:/Users/[...]
您遇到的问题是您在已经被 "import ... "
包围的行中打印["PATH"]
这不是 Python 问题,而是 shell 问题(在本例中,CMD.exe 来自 windows)。 "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 指出的那样,您可以通过 "escaping" 您使用的引号或切换引号的风格来解决此问题:
python -c "import os; print os.environ[\"PATH\"]"
或
python -c "import os; print os.eniron['PATH']"