为什么以下不起作用?
$ 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']
作品?
为什么以下不起作用?
$ 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']
作品?
引号。尝试:
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 问题,甚至不是编程问题。)