从命令行运行Python代码时,os.environ ['PATH']不起作用

时间:2013-11-01 15:21:54

标签: python environment-variables

为什么以下不起作用?

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

作品?

1 个答案:

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