C#调用Python脚本的简单示例

 更新时间:2016年05月17日 11:49:44   作者:MSP_甄心cherish  
这篇文章主要为大家详细介绍了C#调用Python脚本的简单示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

IronPython是一种在 .NET及 Mono上的 Python实现,由微软的 Jim Hugunin所发起,是一个开源的项目,基于微软的 DLR引擎。IronPython的在CodePlex上的主页:http://ironpython.codeplex.com/ 

使用场景:

如果你的小伙伴会写Python脚本,而且已经实现大部分项目的功能不需要再用C# 实现。现在缺少窗体,此时Python+C#的组合就可以完美的结局问题啦!

示例:
借由IronPython,就可以利用.NET执行存储在Python脚本中的代码段。下面通过简单的示例说明如何应用C#调用Python脚本。

1、在VS中新建窗体项目:IronPythonDemo

2、VS的菜单中打开“Nuget程序包管理器”

3、搜索IronPython程序包并安装

4、在exe程序所在文件夹下(此例中为".\IronPythonDemo\IronPythonDemo\bin\Debug"),创建Python脚本。或将现有的脚本拷贝到该目录下。Python示例脚本实现求两个数的四则运算:

num1=arg1 
num2=arg2 
op=arg3 
if op==1: 
 result=num1+num2 
elif op==2: 
 result=num1-num2 
elif op==3: 
 result=num1*num2 
else: 
 result=num1*1.0/num2 

5、修改工程的配置文件App.config如下:
其中microsoft.scripting节点中设置了IronPython语言引擎的几个属性。

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
 <configSections> 
 <section name="microsoft.scripting" type="Microsoft.Scripting.Hosting.Configuration.Section, Microsoft.Scripting"/> 
 </configSections> 
 <microsoft.scripting> 
 <languages> 
  <language names="IronPython;Python;py" extensions=".py" displayName="Python" type="IronPython.Runtime.PythonContext, IronPython"/> 
 </languages> 
 </microsoft.scripting> 
 <startup> 
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> 
 </startup> 
</configuration> 

6、 绘制窗体如下:

7、编写计算的函数:

private void btnCalculate_Click(object sender, EventArgs e) 
  { 
   ScriptRuntime scriptRuntime = ScriptRuntime.CreateFromConfiguration(); 
   ScriptEngine rbEng = scriptRuntime.GetEngine("python"); 
   ScriptSource source = rbEng.CreateScriptSourceFromFile("IronPythonDemo.py");//设置脚本文件 
   ScriptScope scope = rbEng.CreateScope(); 
 
   try 
   { 
    //设置参数 
    scope.SetVariable("arg1",Convert.ToInt32(txtNum1.Text)); 
    scope.SetVariable("arg2", Convert.ToInt32(txtNum2.Text)); 
    scope.SetVariable("arg3", operation.SelectedIndex+1); 
   } 
   catch (Exception) 
   { 
    MessageBox.Show("输入有误。"); 
   } 
 
   source.Execute(scope); 
   labelResult.Text = scope.GetVariable("result").ToString(); 
  } 

8、编译运行可得计算结果(此处未做输入的检查)

以上就是C#调用Python脚本的简单方法,希望对大家的学习有所帮助。

相关文章

  • Quartz.Net实现原理及使用方法详解

    Quartz.Net实现原理及使用方法详解

    这篇文章主要介绍了Quartz.Net实现原理及使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • c#使用反射调用类型成员示例

    c#使用反射调用类型成员示例

    学习C#的时候就知道使用反射可以对我们编程提供极大的便利(动态的获取信息、调用类型成员、创建实例等等),下面示例说明一下使用方法
    2014-01-01
  • C#在LINQ中使用GroupBy

    C#在LINQ中使用GroupBy

    这篇文章主要介绍了C#在LINQ中如何使用GroupBy,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下
    2020-08-08
  • asp.net之生成验证码的方法集锦(一)

    asp.net之生成验证码的方法集锦(一)

    现在很多网站都有注册登录的页面,为了更好的满足用户体验和网站的安全性,很多网站都采用动态生成的图形码或者是附加码进行验证,这篇文章主要就是介绍生成验证码的方法,需要的朋友可以参考下
    2015-08-08
  • C#操作数据库总结(vs2005+sql2005)

    C#操作数据库总结(vs2005+sql2005)

    C#操作数据库总结,每次做项目都会用到数据库,对数据库的操作都是糊里糊涂从书里找代码用。通过昨天晚上与今天早上的努力,把数据库的操作整理了一下,下面把整理结果做个小结
    2012-09-09
  • 深入浅析C#中的var和dynamic

    深入浅析C#中的var和dynamic

    这篇文章给大家介绍了C#中的var和dynamic的相关知识,var和dynamic的本质区别是类型判断的时间不同,前者是编译时,后者是运行时。具体内容详情大家通过本文学习下吧
    2018-05-05
  • C#写日志类实例

    C#写日志类实例

    这篇文章主要介绍了C#写日志类,实现将日志信息写入文本文件的功能,非常具有实用价值,需要的朋友可以参考下
    2014-10-10
  • c# 用ICSharpCode组件压缩文件

    c# 用ICSharpCode组件压缩文件

    今天,主要总结下,windows平台下,zip的压缩与解压的方法,用ICSharpCode组件,有此需求的朋友可以参考下本文
    2021-06-06
  • C#常用数据结构和算法总结

    C#常用数据结构和算法总结

    这篇文章主要介绍了C#常用数据结构和算法,这里我们总结了一些知识点,可以帮助大家理解这些概念。
    2016-06-06
  • C#根据前台传入实体名称实现动态查询数据

    C#根据前台传入实体名称实现动态查询数据

    这篇文章主要为大家详细介绍了C#如何根据前台传入实体名称实现动态查询数据的功能,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-04-04

最新评论