首页 >后端开发 >Python教程 >如何在没有 IronPython 的情况下从 C# 执行 Python 脚本?

如何在没有 IronPython 的情况下从 C# 执行 Python 脚本?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-15 16:39:11346浏览

How Can I Execute Python Scripts from C# Without IronPython?

从 C# 调用 Python 脚本

可以从 C# 执行 Python 脚本,而无需使用 IronPython 等外部库。解决方法如下:

考虑以下 Python 脚本 (code.py):

if __name__ == '__main__':
    with open(sys.argv[1], 'r') as f:
        s = f.read()
    print(s)

要在 C# 中运行此脚本,请按如下方式调整 run_cmd 方法:

private void run_cmd(string cmd, string args)
{
    ProcessStartInfo start = new ProcessStartInfo();

    // Specify the complete path to python.exe
    start.FileName = "my/full/path/to/python.exe";

    // Build the argument string with the script and file paths
    start.Arguments = string.Format("{0} {1}", cmd, args);

    // Disable using the shell to gain more control
    start.UseShellExecute = false;

    // Enable standard output redirection to capture the script's output
    start.RedirectStandardOutput = true;

    using (Process process = Process.Start(start))
    {
        using (StreamReader reader = process.StandardOutput)
        {
            string result = reader.ReadToEnd();
            Console.Write(result);
        }
    }
}

通过将 UseShellExecute 设置为 false,您可以控制传递给 Python 的命令和参数。您必须提供 python.exe 的完整路径作为 FileName 并构造参数字符串以包含脚本路径 (cmd) 和要读取的文件路径 (args)。

请注意,连续从以下位置调用 Python 脚本由于每次创建新进程的开销,C# 可能会影响性能。如果您的脚本需要大量运行时间,请考虑优化您的方法或使用更合适的进程间通信机制。

以上是如何在没有 IronPython 的情况下从 C# 执行 Python 脚本?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn