旅行好きなソフトエンジニアの備忘録

プログラミングや技術関連のメモを始めました

【C#】 C#からDOSコマンドでPythonスクリプトを呼び出す

C#からPythonを呼び出す方法はいくつかあるようで、IronPythonを利用する方法がまずヒットしたのですが、IronPythonではサポートされていないライブラリを利用したスクリプトを呼び出したいと考えています。そのため、こちら(DOSコマンドを実行し出力データを取得する: .NET Tips: C#, VB.NET)の方法を利用してみることにしました。

// プロセスクラスのインスタンス化
var p = new Process();

// cmd.exeのパスを取得
p.StartInfo.FileName = System.Environment.GetEnvironmentVariable("ComSpec");
// 出力を読み取れるようにする
p.StartInfo.UseShellExecute = false;
p.StartInfo.RedirectStandardOutput = true;
p.StartInfo.RedirectStandardInput = false;
// ウインドウを表示しないようにする
p.StartInfo.CreateNoWindow = true;
// hello.pyを実行する(ファイルにはprint('Hello')と書かれている)
p.StartInfo.Arguments = @"/c python hello.py";

// 起動
p.Start();

// 出力を読み取る
string result = p.StandardOutput.ReadToEnd();

// プロセス終了まで待機する
p.WaitForExit();
p.Close();

// コンソールにHelloと表示される
Console.WriteLine(result);