处理一些代码,从命令提示符运行时我遇到错误...
NameError: name 'Popen' is not defined
但我已导入import os
和import sys
。
这是代码的一部分
exepath = os.path.join(EXE File location is here)
exepath = '"' + os.path.normpath(exepath) + '"'
cmd = [exepath, '-el', str(el), '-n', str(z)]
print 'The python program is running this command:'
print cmd
process = Popen(cmd, stderr=STDOUT, stdout=PIPE)
outputstring = process.communicate()[0]
我错过了一些基本的东西吗?我不怀疑。谢谢!
答案 0 :(得分:33)
你应该这样做:
import subprocess
subprocess.Popen(cmd, stderr=subprocess.STDOUT, stdout=subprocess.PIPE)
# etc.
答案 1 :(得分:7)
Popen在子流程模块中定义
import subprocess
...
subprocess.Popen(...)
或者:
from subprocess import Popen
Popen(...)
答案 2 :(得分:2)
导入模块时,模块的成员不会成为全局命名空间的一部分:您仍然必须在前面添加modulename.
。所以,你必须说
import os
process = os.popen(command, mode, bufsize)
或者,您可以使用from module import names
语法将内容导入全局命名空间:
from os import popen # Or, from os import * to import everything
process = popen(command, mode, bufsize)
答案 3 :(得分:1)
如果您的导入如下:
import os
然后你需要像这样引用os中包含的东西:
os.popen()
如果您不想这样做,可以将导入更改为:
from os import *
不建议这样做,因为它可能会导致名称空间含糊不清(代码中的内容与其他地方导入的内容冲突。)您也可以这样做:
from os import popen
比os import *
更明确,更容易阅读答案 4 :(得分:1)
这看起来像子进程模块中的Popen(python> = 2.4)
from subprocess import Popen
答案 5 :(得分:-1)
如果你只是导入操作系统,你应该使用os.popen()。