1

为什么以下不起作用?

$ 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']

作品?

4

1 回答 1

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 问题,甚至不是编程问题。)

于 2013-11-01T15:23:26.060 回答