2014-11-01 72 views
1

我有这里面一个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 蟒在启动过程之后2.7.5

回答

1

的python脚本结束,和你的提示返回(打印C:\>)。但子进程仍在运行,并且其stdout和stderr默认在控制台中写入,如果不重定向,它将继续输出并写入返回的提示。

你可能想要做的就是等待子进程结束,第一

subprocess.call([program, file]) 

(如果你只是打印标准输出就没有必要做任何事情因为这是默认的。)

如果您确实需要访问stdout,请重定向stdout并使用通信。

p = subprocess.Popen([program, file], stdout=subprocess.PIPE, stderr=subprocess.PIPE) 
stdout, stderr = p.communicate() 
print stdout 
+0

感谢您的回答,在我的python脚本中使用它并不显示路径(C:\>),如果我使用通信然后打印标准输出。问题是我应该如何处理这个过程(我应该为此做另一个问题),如果我通过web(http:// localhost:9292/process)使用某些内容来完成此操作并将stdout返回给浏览器,它只会显示在路径(C:\>)之前的输出 – JavierQQ23 2014-11-03 15:47:43