このような質問は、これまでさまざまな程度で行われてきましたが、簡潔に答えられていないと感じたので、もう一度質問します。
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);
}
}