Popen 和 Python

10 投票
6 回答
71509 浏览
提问于 2025-04-15 12:18

我在写代码的时候,从命令提示符运行它时出现了错误...

NameError: name 'Popen' is not defined

但是我已经导入了 import osimport 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.

撰写回答