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脚本的简单方法,希望对大家的学习有所帮助。

相关文章

  • C#(.net)水印图片的生成完整实例

    C#(.net)水印图片的生成完整实例

    这篇文章主要介绍了C#(.net)水印图片的生成方法,以一个完整实例的形式讲述了水印图片的生成技巧,非常实用,需要的朋友可以参考下
    2014-09-09
  • C#+RedisSearch实现高性能全文搜索

    C#+RedisSearch实现高性能全文搜索

    Redis Search是一个Redis模块,它使用压缩的倒排索引来实现快速的索引和低内存占用,本文主要介绍了C#如何使用RedisSearch实现高性能全文搜索,希望对大家有所帮助
    2023-07-07
  • C# Winform实现导出DataGridView当前页以及全部数据

    C# Winform实现导出DataGridView当前页以及全部数据

    基本上,所有的业务系统都会要求有导出的功能,所以这篇文章主要为大家介绍了如何利用Winform实现原生DataGridView的导出功能,需要的可以参考一下
    2023-07-07
  • C#使用ping命令的两个例子

    C#使用ping命令的两个例子

    这篇文章主要介绍了C#使用ping命令的两个例子,本文给出了调用CMD命令和使用C# ping类的两个例子,需要的朋友可以参考下
    2014-08-08
  • Unity利用UGUI制作提示框效果

    Unity利用UGUI制作提示框效果

    这篇文章主要为大家详细介绍了Unity利用UGUI制作提示框效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • Unity游戏开发中的设计模式之策略模式

    Unity游戏开发中的设计模式之策略模式

    策略模式是Unity游戏开发中常用的设计模式之一,用于封装一系列算法或行为,并使这些算法或行为可以相互替换。通过策略模式,可以在运行时动态地选择算法或行为,实现游戏中的多样性和可扩展性。常见的应用包括AI行为、武器攻击、移动方式等
    2023-05-05
  • C#基础之数组排序、对象大小比较实现代码

    C#基础之数组排序、对象大小比较实现代码

    C#基础之数组排序、对象大小比较实现代码,学习c#的朋友可以参考下。
    2011-08-08
  • C#通过流写入一行数据到文件的方法

    C#通过流写入一行数据到文件的方法

    这篇文章主要介绍了C#通过流写入一行数据到文件的方法,涉及C#针对文本文件读写的基本技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • C#使用AutoMapper实现类映射详解

    C#使用AutoMapper实现类映射详解

    AutoMapper是一个用于.NET中简化类之间的映射的扩展库,这篇文章主要介绍了C#如何使用AutoMapper实现类映射,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-01-01
  • C# 实现PPT 每一页转成图片过程解析

    C# 实现PPT 每一页转成图片过程解析

    这篇文章主要介绍了C# 实现PPT 每一页转成图片过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09

最新评论