最近有群友咨询C#如何调用Python?小编尝试Python.NET过程中遭遇的版本兼容性和环境配置难题,小编决定寻找一个更为简单、稳定且对初学者友好的解决方案。小编搜索一番,除了Python.NET之外,还有其他途径能够帮助我们轻松地在C#项目调用Python脚本,那就是通过命令行调用,使用 System.Diagnostics.Process 类可以启动 Python 进程,并通过命令行参数传递脚本路径等信息。调用流程如下:
1、环境准备
在操作系统中安装好python,最好3.0以上版本;然后新建一个.NET8控制台程序,不需要引用任何组件;最后新建一个python文件用来测试,用txt新建并另存为py文件就可以。代码如下:
#定义一个数字列表 numbers = [10, 20, 30, 40, 50] #调用内置函数进行聚合 sum_of_numbers = sum(numbers) # 求和 print('上面数组求和为:',sum_of_numbers) print('欢迎关注公众号:Dotnet开发跳槽!');
2、通过命令行调用Python
此方法的核心思想是,C#程序通过System.Diagnostics命名空间下的Process类来启动Python解释器,并向其传递Python脚本的路径及必要的参数。代码如下:
using System.Diagnostics; using (Process process = new Process()) { process.StartInfo.FileName = "python"; process.StartInfo.Arguments = "E:\\lea\\python\\demo.py"; process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardOutput = true; process.Start(); string result = process.StandardOutput.ReadToEnd(); process.WaitForExit(); Console.WriteLine(result); }
效果如下:
优势与局限
优势:该方法简单直观,对环境的依赖较少,不需要安装额外的库或组件,特别适用于环境配置复杂或版本兼容性问题突出的情况。
局限:相比直接的库集成(如Python.NET),这种方法牺牲了一定的性能,特别是在频繁的交互场景下,每次调用都需要启动新的Python进程。此外,数据交换主要通过文本输出,处理大量或复杂数据结构时不够高效。大家使用Python.NET成功没有?欢迎分享经验。