今回の記事はC#でPythonを実行する方法に関してご紹介します。Pythonのexe化はかなり手間がかかりますので、バッチファイル経由でコマンドでPythonファイルを実行し、出力を取得する流れをご紹介していきます。
Pythonを実行するバッチの作成
Pythonファイルは下記のような記述にしましょう。
print("テスト")
このファイルをコマンドから実行すると下記のような出力になります。
python [test.pyのあるディレクトリ]/test.py
出力
テスト
ではこのコマンド実行をバッチファイルにしていきます。
rem AnacondaのPythonを使用する場合は下記のremを外して使用します。
rem call C:\Users\XXX\Anaconda3\Scripts\activate.bat
python test.py
timeout 10
batファイルはメモ帳などからも作成可能なので好きに作ってみてください。バッチファイルはクリックすると実行可能です。
ではこのバッチファイルをC#で実行し、Pythonでコンソールに出力している「テスト」という文字を取得していきます。
C#でバッチファイルを実行
次にC#でバッチファイルを実行する方法に関してです。
using System.Diagnostics;
namespace test
{
class Program
{
static void Main(string[] args)
{
Process p = new Process();
p.StartInfo.FileName = "バッチファイルのパス.bat";
//p.StartInfo.Arguments = "何か引数があれば";
p.StartInfo.Verb = "RunAs"; //管理者として実行する場合
//実行
p.Start();
}
}
}
引数があればコメントアウトを外して実行してみてください。基本的にコマンドラインでの操作のようなイメージなのでexeファイルを実行したい場合は、バッチファイルのパスのところをexeファイルのパスに変更してください。
詳しくは下記記事で解説しています。
C#でPythonを実行しコンソールを取得
using System;
using System.Diagnostics;
namespace test
{
class Program
{
static void Main(string[] args)
{
Process p = new Process();
p.StartInfo.FileName = "バッチファイルのパス.bat";
//p.StartInfo.Arguments = "何か引数があれば";
p.StartInfo.Verb = "RunAs"; //管理者として実行する場合
//実行
p.StartInfo.RedirectStandardOutput = true;
p.Start();
string str = p.StandardOutput.ReadLine();
p.WaitForExit();
Console.WriteLine(str);
}
}
}
先ほどのバッチ実行プログラムにバッチのコンソールを取得するプログラムを追加し、Pythonでprintした結果を取得できます。
以上で今回の記事は終了です。他にも多数のC#関連の記事やPythonの記事を記載しています。是非興味があればそちらも参考にしてください。
コメント