从 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中文网其他相关文章!