2011-11-15 4 views
1

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

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

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


    } 
} 

を私は信じて、スクリプトを実行するためにEXECUTEFILEを使用することが、私は1つがで引数に渡す方法がわかりません可能であればこのシナリオ。私は、コマンドラインからコマンドを実行している場合

基本的に、それは次のようになります。

python tap_example.py localhost:11210 

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

提案がありますか?

答えて

2

StackOverflowのScript arguments and Embedded IronPythonポストにあるJeff Hardyの答えに示すように、エンジンを作成するときに引数を渡すことができます。あなたの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"); 
    } 
} 

How can I redirect the stdout of ironpython in C#?に示すように、あなたがpyEngine.Runtime.IOオブジェクトのメソッドを使用することができ、標準出力をリダイレクトするには。

関連する問題