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

Posted annbless

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了`python`被`C# `调用的方法相关的知识,希望对你有一定的参考价值。

目的:

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

参考材料:

  • markdown语法
  • python被C#调用的方法(参考自博客内容)

调用方法:

  1. 采用Ironpython:
    • 优点: 快捷方便,方便传递参数等,因为相当于是将python代码传递进C#之中进行操作,语法逻辑比较清楚。
    • 缺点: 需要额外配置Ironpython, 且不支持python3.X。不共享系统中安装的python环境包,需要额外配置路径或者重装numpy之类的软件包。
    • 示例代码:
    using IronPython.Hosting;
    using Microsoft.Scripting;
    using Microsoft.Scripting.Hosting; 
    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(‘
    ‘); //获取输出的字符串
    p.WaitForExit();
    p.Close();
  3. 方法2的补充:
    • 关于如何传递大量数据,比如数组之类的:
      • 采用json储存,传递地址或者默认一个共用地址,从地址读取json数据

以上是关于`python`被`C# `调用的方法的主要内容,如果未能解决你的问题,请参考以下文章

Java基础之方法的调用重载以及简单的递归

getPageTitle() 没有被片段内的 Tablayout 调用

Python 自动化 - 浏览器chrome打开F12开发者工具自动Paused in debugger调试导致无法查看网站资源问题原因及解决方法,javascript反调试问题处理实例演示(代码片段

片段中不调用onReceive()方法

ASP.net MVC 代码片段问题中的 Jqgrid 实现

onRequestPermissionsResult 永远不会在片段中被调用 [重复]