`python`被`C# `调用的方法

C#调用Python全攻略
本文详述了两种C#调用Python的主要方法:利用IronPython和通过命令行调用。介绍了各自的优缺点,提供了具体示例代码,并讨论了大量数据传递的解决方案。

目的:

  • 熟悉markdown
  • 记录python被C#调用的方法

参考材料:

调用方法:

  1. 采用Ironpython:
    • 优点: 快捷方便,方便传递参数等,因为相当于是将python代码传递进C#之中进行操作,语法逻辑比较清楚。
    • 缺点: 需要额外配置Ironpython, 且不支持python3.X。不共享系统中安装的python环境包,需要额外配置路径或者重装numpy之类的软件包。
    • 示例代码:
    using IronPython.Hosting;
    using Microsoft.Scripting;
    using Microsoft.Scripting.Hosting; 
    C#中调用处:
    C# var engine = Python.CreateEngine(); var scope = engine.CreateScope(); var source = engine.CreateScriptSourceFromFile("path\\test.py") source.Execute(scope); var func = scope.GetVariable<Func<object, object>>("func"); //该函数有一个参数输入 func('test') //最简单的调用
  2. 命令行process调用:
    • 优点:也挺方便的,但是要设置的比较多,不同操作系统需要注意下路径写法之类的。
    • 缺点:通过命令行的方式传递参数,感觉不是非常适合大量数据的传递或者对命令行不熟悉的话使用起来有些麻烦
    • 示例代码:
    using System.Diagnostics;
    Process p = new Process();
    //使用cmd命令是因为使用直接使用python实验过程中会闪退,暂时先使用cmd命令代替
    p.StartInfo.FileName = "cmd.exe";
    p.StartInfo.Arguments = "/k" + " " + "python" + " " + "path\\test.py";
    p.StartInfo.RedirectStandardError = true;
    p.StartInfo.RedirectStandardInput = true;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.CreateNoWindow = false; //输入输出重定向可能需要手动关闭弹出的cmd窗口
    p.Start();
    string[] output = p.StandardOutput.ReadToEnd().Split('\r'); //获取输出的字符串
    p.WaitForExit();
    p.Close();
  3. 方法2的补充:
    • 关于如何传递大量数据,比如数组之类的:
      • 采用json储存,传递地址或者默认一个共用地址,从地址读取json数据

转载于:https://www.cnblogs.com/Annbless/p/9714343.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值