• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c#调用python脚本

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

最近看了些关于python的东西,虽然只是粗略的过了一下,还是觉得有些东西如果用python实现起来,比用c#实现要简洁的多,于是便有了c#和python混合开发的想法,网上查了一下,发现资料还挺多,也挺简单的,无非是调用了IronPython.dll这个动态链接库,而且使用这个dll运行python脚本,并不需要安装python解释器。下面是我写的一个小例子,最后会附上项目源码。

先新建一个Windows窗体项目:(项目名随便,我的项目叫“CSharpCallPython”,如果要借鉴的话,请把版权费转账到我支付宝,谢谢!)

项目建好后,应该需要开头说的那个大名鼎鼎的 IronPython 了。

关于这个IronPython,可以去他的官网下载,也可以使用vs的NuGet管理器下载,过程如下:

 

 

IronPython安装完成后,会自动在项目里添加下面这些引用,其实在我这个例子里只需要 IronPython.dll 和 Microsoft.Scripting.dll 就可以了,其他的都不需要,但我并没有把他们删掉~~~恩,就是没删掉。

在你的硬盘里随便找个地方,新建一个文本文件,将后缀名改为“.py”(我的这个文件夹叫 “test1.py”,我把它放在项目的 Debug 目录下了,是不是很出乎意料?),并写入以下python代码 (这段Python代码不受著作权保护,大家可以随便改,随便用,随便署名)

def main(arr):
    try:
        arr = set(arr)
        arr = sorted(arr)
        arr = arr[0:2]
        return str(arr)
    except Exception as err:
        return str(err)

该python代码的意思是,声明了一个main函数,接受一个python列表参数,然后对这个列表去重,排序,保留前两项其余项移除,并返回一个字符串;如还不明白,请去百度python教程,自己看。

然后回到vs里,在form上添加两个TextBox控件,再添加一个Button控件,第一个TextBox控件用来接收输入参数,第二个用来显示输出参数,而那个Button控件,我忘记是干嘛的了~~~

在Button控件的Click事件里添加下面这段代码(想起来了,Button是用来执行代码的。。。)

ScriptEngine pyEngine = Python.CreateEngine();//创建Python解释器对象
dynamic py = pyEngine.ExecuteFile(@"test1.py");//读取脚本文件
string dd = py.main(textBox1.Lines);//调用脚本文件中对应的函数
textBox2.Text += dd + "\r\n";

上面的 @"test1.py" 就是刚才让你建的.py文件的路径,如果不在Debug目录下的话,你得改成相应的路径。然后开始运行,并且在 textBox1 里填几行内容,随便什么,然后勇敢的使用鼠标去点击那个神奇的 button 吧,好了,到目前为止已经搞定了,就是这么简单,下面是项目源码,源码里面除了这个方法之外,还提供了一种可以直接运行python代码字符串的方法,有需要的话,可以下载来看看。

 

微云:

http://share.weiyun.com/9708b00b24a5af7c477bddbe90408d35

 

百度云盘:

http://pan.baidu.com/s/1kVM3Rcb


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#扩展方法——去重(Distinct)发布时间:2022-07-18
下一篇:
c#winform程序如何获取命令行带参数启动时的参数发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap