我正在尝试以下方法:
#!/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
接着是两个新行。如何捕获函数执行的输出?
答案 0 :(得分:1)
读取管道获取目前管道内的任何内容。你的mongo正在等待连接到localhost。由于它的返回速度不够快,因此读取命令无法获得结果。这可能是因为您没有在本地运行mongo,但如果您不等待子进程完成,则会反复遇到此问题。
答案 1 :(得分:0)
另外,请记住,据我所知,subprocess.Popen不会阻止。如果您希望在尝试获取输出之前完成该函数,则可能需要进行x.wait()调用。