-1

我正在尝试以下操作:

#!/usr/bin/python

import os, subprocess

func = 'print("Hello World")'

x = subprocess.Popen(['mongo', '--eval', func], stdout=subprocess.PIPE,            
stderr=subprocess.PIPE, stdin=subprocess.PIPE)
print x.stdout.read()
print x.stderr.read()

但我得到的只是:

MongoDB shell version: 2.2.3

其次是两条新线。如何捕获函数执行的输出?

4

2 回答 2

1

读取管道可以获取当前在所述管道内的任何内容。您的 mongo 正在等待连接到 localhost。由于它返回的速度不够快,因此您的读取命令没有得到结果。这可能是因为你本地没有运行mongo,但是不等待子进程完成就会反复遇到这个问题。

于 2013-05-10T17:56:32.053 回答
0

另外,请记住,据我所知, subprocess.Popen 不会阻塞。如果您希望函数在尝试获取输出之前完成,您可能需要进行 x.wait() 调用。

于 2013-05-10T18:28:59.393 回答