如何从C#中运行Python脚本?

22 浏览
0 Comments

如何从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 filename作为args传递。

我已经找了一段时间了,只能找到建议使用IronPython或类似工具的人。但肯定有一种方法可以从C#调用Python脚本。

一些澄清:

我需要从C#运行它,我需要捕获输出,并且我不能使用IronPython或其他任何工具。你有任何方法都可以。

附注:我实际运行的Python代码比这个复杂得多,它返回我在C#中需要的输出,而C#代码将不断调用Python代码。

假设这是我的代码:

    private void get_vals()
    {
        for (int i = 0; i < 100; i++)
        {
            run_cmd("code.py", i);
        }
    }

0