猿问

如何从C#运行Python脚本?

如何从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位置为cmdfilename位置为args不管用。我被告知我应该通过python.exe就像cmd,然后code.py filename就像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);
        }
    }


慕标5832272
浏览 1481回答 3
3回答
随时随地看视频慕课网APP
我要回答