在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
最近看了些关于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 |
请发表评论