-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

その後に 2 つの新しい行が続きます。関数実行の出力をキャプチャするにはどうすればよいですか?

4

2 に答える 2

1

パイプを読み取ると、現在そのパイプ内にあるものがすべて取得されます。mongo はローカルホストへの接続を待機しています。十分に速く返らないため、読み取りコマンドは結果を取得していません。これは、mongo をローカルで実行していないことが原因である可能性がありますが、サブプロセスが完了するまで待たないと、この問題が繰り返し発生します。

于 2013-05-10T17:56:32.053 に答える