1

動的言語ランタイム/IronPython を使用して、コマンド引数を使用して .py スクリプトを実行し、std 出力を取得しようとしています。これは、C# ではまだ実装されていない membase TAP プロトコルを実行するためのものです。

public class MembaseTap
{
    public void Tap()
    {
        var pyEngine = Python.CreateEngine(); 

        pyEngine.ExecuteFile(@"E:\Program Files\Membase\Server\bin\tap_example.py"); 


    }
}

ExecuteFile を使用してスクリプトを実行できると思いますが、可能であれば、このシナリオで引数を渡す方法がわかりません。

基本的に、コマンドラインからコマンドを実行していた場合、次のようになります。

python tap_example.py localhost:11210

これを C# から単純に実行することもできますが、それには Python をインストールする必要があります。これはフォールバック オプションの 1 つですが、DLR を使用することをお勧めします。

助言がありますか?

4

1 に答える 1

2

エンジンを作成するときに引数を渡すことができます。これは、Jeff Hardy のスクリプト引数の回答と、StackOverflowの Embedded IronPython投稿に示されています。C# コードは次のようになります。

public class MembaseTap
{
    public void Tap()
    {
        var options = new Dictionary<string, object>();
        options["Arguments"] = new [] { "foo", "bar" };
        var pyEngine = Python.CreateEngine(options); 

        pyEngine.ExecuteFile(@"E:\Program Files\Membase\Server\bin\tap_example.py"); 
    }
}

標準出力をリダイレクトするには、pyEngine.Runtime.IO オブジェクトでメソッドを使用できます (C# で ironpython の標準出力をリダイレクトするにはどうすればよいですか?)。.

于 2011-11-15T19:14:27.757 に答える