この種の質問は以前にさまざまな程度で尋ねられましたが、簡潔な方法で答えられていないと感じているので、もう一度質問します。
Pythonでスクリプトを実行したい。これだとしましょう:
if __name__ == '__main__':
with open(sys.argv[1], 'r') as f:
s = f.read()
print s
これはファイルの場所を取得し、それを読み取り、その内容を印刷します。それほど複雑ではありません。
わかりました。これをC#で実行するにはどうすればよいですか。
これは私が今持っているものです:
private void run_cmd(string cmd, string args)
{
ProcessStartInfo start = new ProcessStartInfo();
start.FileName = cmd;
start.Arguments = args;
start.UseShellExecute = false;
start.RedirectStandardOutput = true;
using (Process process = Process.Start(start))
{
using (StreamReader reader = process.StandardOutput)
{
string result = reader.ReadToEnd();
Console.Write(result);
}
}
}
私がcode.py
場所を渡し、それが機能しない場所を渡すcmd
と、として、次にとして渡す必要があると言われました。filename
args
python.exe
cmd
code.py filename
args
私はしばらく探していましたが、IronPythonなどの使用を提案している人しか見つかりません。ただし、C#からPythonスクリプトを呼び出す方法が必要です。
いくつかの明確化:
C#から実行する必要があり、出力をキャプチャする必要があります。IronPythonなどは使用できません。どんなハックでも大丈夫です。
PS:私が実行している実際のPythonコードはこれよりもはるかに複雑で、C#で必要な出力を返します。C#コードは常にPythonコードを呼び出します。
これが私のコードであるとしましょう:
private void get_vals()
{
for (int i = 0; i < 100; i++)
{
run_cmd("code.py", i);
}
}