如何从C#运行Python脚本?
之前已经在不同程度上提出了这类问题,但我觉得它没有以简洁的方式回答,所以我再次提出这个问题.
我想用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传递,文件名位置作为args时,它不起作用.我被告知我应该将python.exe作为cmd传递,然后将code.py文件名作为args传递.
我一直在寻找一段时间,只能找到建议使用IronPython等的人.但是必须有一种从C#调用Python脚本的方法.
一些澄清:
我需要从C#运行它,我需要捕获输出,我不能使用IronPython或其他任何东西.无论你有什么黑客都没关系.
P.S.:我正在运行的实际Python代码比这复杂得多,它返回我在C#中需要的输出,而C#代码将不断调用Python.
假装这是我的代码:
private void get_vals()
{
for (int i = 0; i < 100; i++)
{
run_cmd("code.py", i);
}
}