C#如何调用Python执行脚本,并将执行结果显示值显示至C#界面

在网上查找了很多资料,试了很多C#调用Python执行脚本的代码,但大都是执行出错的。花了很多时间最终找了C#能正确调用Python脚本的方法且将结果显示,而且此方法已编译运行成功,下面我举个例子介绍下C#如何调用Python执行脚本,并将执行结果显示值显示至C#界面。

第一步:首先的安装IronPython2.7,这个网上有很多可以直接下载,默认安装路径就行(C:\Program Files (x86)\IronPython 2.7),其次将IronPython2.7路径添加到系统变量路径,这样便于在windows下cmd执行Python的.py脚本文件,在哪添加如下图所示:


操作:右击 我的电脑->属性->高级系统设置->环境变量->系统变量中找到Path,点击编辑,将安装路径添加到变量值中(注意:两个不同的路径之间用英文分号隔开),完成之后点击确定,这样将.py脚本文件直接拖到cmd.exe中,按enter键运行就可以执行,如下图所示:

对于怎么新建.py文件,可以首先新建一个txt文本文件,之后将其后缀改为.py,如何编写.py文件,可以下载编译器,我已上传编译器资源,大家可以下载

第二步:完成一个实例:C#调用一个Python脚本,脚本的执行结果为“Hello,World!”,并将执行结果显示到C#Form窗体的richTextbox中。

首先完成test01.py脚本文件的的编写,代码如下:

#import sys
#sys.path.append("C:\Program Files (x86)\IronPython 2.7\Lib")
#print "hello,world"
def result():
    return "Hello,World!"

#就不用在意,代表代码被注释掉,定义了一个result函数,该函数返回的值是“Hello,World!”

其次在C#编译环境中添加test01.py文件,并且在添加完脚本文件之后,设置脚本文件的属性-“复制到输出目录”为始终复制

C#代码如下:

 private void Test01_Click(object sender, EventArgs e)
        {
            try
            {
                ScriptEngine ssa = Python.CreateEngine();
                ScriptScope ssb = ssa.CreateScope();
                ScriptSource ssc = ssa.CreateScriptSourceFromFile("test01.py");
                ssc.Execute(ssb);
                //var result = ssc.Execute<object>("result");
                var result = ssb.GetVariable<Func<object>>("result");
                richTextBox1.Text = result().ToString();
            }
            catch(SystemException ex)
            {
                MessageBox.Show(ex.Message, "Error");
            }
        }

在C#使用Python脚本文件要注意的的是,首先要将IronPython2.7安装路径中的两个dll文件添加到C#引用中一个是IronPython.dll,另一个是Microsoft.Scripting.dll库文件;其次在代码中添加引用如下所示:

using IronPython.Hosting;//引用ironpython文件
using Microsoft.Scripting.Hosting;//引用ironpython文件

在此C#代码中有两个点需要注意:第1点首先要创建ScriptEngine、ScriptScope和 ScriptSource执行的文件资源,并且一定要先用.Execute执行要执行的脚本文件,如果不执行会报错,报错内容是找不到用的result函数

第2点,获取函数的返回值采用.GetVariable<Func<object>>方法,object是函数返回类型,如果不确定是什么类型,采用object类型,后面再跟函数的名称,特别注意在result定义之后调用时一定要加括号 result(),或者是函数中需要的参数,否则会报错

最终点击button按钮之后执行结果如下图所示:


以上是C#调用Python脚本的简单的例子,如有错误的地方请大家批评指正,谢谢大家!

  • 6
    点赞
  • 30
    收藏
  • 打赏
    打赏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:编程工作室 设计师:CSDN官方博客 返回首页
评论 6

打赏作者

cw19901024

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值