为什么以下不起作用?
$ python -c 'import os; print os.environ['PATH']'
Traceback (most recent call last):
File "<string>", line 1, in <module>
NameError: name 'PATH' is not defined
,而
$ python
>>> import os
>>> print os.environ['PATH']
作品?
答案 0 :(得分:2)
行情。尝试:
python -c 'import os; print os.environ["PATH"]'
在命令到达Python之前,shell正在删除单引号,正如您可以使用以下命令看到的那样:
echo 'import os; print os.environ['PATH']'
(事实上,您可以通过语法着色在这里看到会发生奇怪的事情。)
现在,为什么会这样? PATH
周围的单引号结束字符串并开始一个新字符串。本质上,shell将其解析为以下三个字符串(尽管没有换行符):
import os; print os.environ[
PATH
]
这就是传递给Python的东西,它将PATH
视为变量名称,并且正确地抱怨你没有定义它。
有关使用shell的更多信息,请参阅man bash
。 (严格来说,“我如何使用我的shell?”不是Python问题,甚至不是编程问题。)