Popen 和 Python
我在写代码的时候,从命令提示符运行它时出现了错误...
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]
我是不是漏掉了什么基本的东西?我觉得有可能。谢谢!
6 个回答
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)
7
Popen是在子进程模块中定义的
import subprocess
...
subprocess.Popen(...)
或者:
from subprocess import Popen
Popen(...)
38
你应该这样做:
import subprocess
subprocess.Popen(cmd, stderr=subprocess.STDOUT, stdout=subprocess.PIPE)
# etc.