我的内部有一个py文件:
from subprocess import Popen
program = "path to program.exe"
file = "path to file used by program.exe"
p = Popen([program, file])
print p.stdout.read()
当我这样做时:
C:\>python file.py
在cmd中我得到了
#output
#....
#... more output
C:\:>#...more output
#....
#...here finishes output
为什么会出现" C:\>
" ?
是因为Popen为了运行我给出的命令......需要创建一个新进程吗?
提前致谢
PD: 使用Windows Server 2008 python 2.7.5
答案 0 :(得分:1)
python脚本在启动进程后结束,并且提示符返回(打印C:\>
)。但是,子进程仍然在运行,如果没有重定向,它的stdout和stderr默认在控制台中写入,继续输出并在返回的提示符上写入。
您可能想要做的是等待子流程结束,首先
subprocess.call([program, file])
(如果您只是在那里打印标准品,则无需执行任何操作,因为这是默认设置。)
如果确实需要访问标准输出,请重定向标准输出并使用通信。
p = subprocess.Popen([program, file], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = p.communicate()
print stdout