虽然导入了子进程,但未定义名称“STDOUT”

时间:2015-10-30 06:00:46

标签: python constants

我明显使用STDOUT

时出错
>>> import subprocess
>>>print STDOUT

追踪(最近一次通话):   文件“”,第1行,in NameError:名称'STDOUT'未定义

它也适用于

from subprocess import STDOUT

但是,如果模块中有很多这样的常量,有没有办法导入模块中定义的任何此类常量而不明确提及它们。

1 个答案:

答案 0 :(得分:7)

您需要告诉Python在哪里找到" STDOUT",即在'子流程'模块。这就是为什么当你指定" subprocess.STDOUT"有用。如果您希望能够在不必命名模块的情况下引用STDOUT,请按以下方式导入:

from subprocess import STDOUT

或者,如果您正在使用子流程中的所有函数和类,则可以像这样导入它们

from subprocess import *

但建议您尽可能避免这种情况,原因很多(参见What exactly does "import *" import?)。否则,您应该只导入将用作import语句中元组的所有方法和类:

from subprocess import STDOUT, popen, call