打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
c#调用python脚本

c#调用python脚本

最近看了些关于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

本文为博主原创,转载请注明出处,谢谢!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
C#中调用python
C#调用python脚本
C#调用Python脚本训练并生成AI模型(以Paddle框架为例)
在C#中调用python方法
JupyterNotebook——Python神器之大型扫盲运动
在.NET中嵌入IronPython 交互
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服