python - 输出内部打印的路径

时间:2014-11-01 23:43:43

标签: python windows subprocess popen

我的内部有一个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

1 个答案:

答案 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