C#如何调用Python执行脚本,并将执行结果显示值显示至C#界面
2017-06-21 08:01
639 查看
在网上查找了很多资料,试了很多C#调用Python执行脚本的代码,但大都是执行出错的。花了很多时间最终找了C#能正确调用Python脚本的方法且将结果显示,而且此方法已编译运行成功,下面我举个例子介绍下C#如何调用Python执行脚本,并将执行结果显示值显示至C#界面。
第一步:首先的安装IronPython2.7,这个网上有很多可以直接下载,默认安装路径就行(C:\Program Files (x86)\IronPython 2.7),其次将IronPython2.7路径添加到系统变量路径,这样便于在windows下cmd执行Python的.py脚本文件,在哪添加如下图所示:
操作:右击 我的电脑->属性->高级系统设置->环境变量->系统变量中找到Path,点击编辑,将安装路径添加到变量值中(注意:两个不同的路径之间用英文分号隔开),完成之后点击确定,这样将.py脚本文件直接拖到cmd.exe中,按enter键运行就可以执行,如下图所示:
对于怎么新建.py文件,可以首先新建一个txt文本文件,之后将其后缀改为.py,如何编写.py文件,可以下载编译器,我已上传编译器资源,大家可以下载
第二步:完成一个实例:C#调用一个Python脚本,脚本的执行结果为“Hello,World!”,并将执行结果显示到C#Form窗体的richTextbox中。
首先完成test01.py脚本文件的的编写,代码如下:
#import sys
#sys.path.append("C:\Program Files (x86)\IronPython 2.7\Lib")
#print "hello,world"
def result():
return "Hello,World!"
#就不用在意,代表代码被注释掉,定义了一个result函数,该函数返回的值是“Hello,World!”
其次在C#编译环境中添加test01.py文件,并且在添加完脚本文件之后,设置脚本文件的属性-“复制到输出目录”为始终复制
C#代码如下:
private void Test01_Click(object sender, EventArgs e)
{
try
{
ScriptEngine ssa = Python.CreateEngine();
ScriptScope ssb = ssa.CreateScope();
ScriptSource ssc = ssa.CreateScriptSourceFromFile("test01.py");
ssc.Execute(ssb);
//var result = ssc.Execute<object>("result");
var result = ssb.GetVariable<Func<object>>("result");
4000
richTextBox1.Text = result().ToString();
}
catch(SystemException ex)
{
MessageBox.Show(ex.Message, "Error");
}
}
在C#使用Python脚本文件要注意的的是,首先要将IronPython2.7安装路径中的两个dll文件添加到C#引用中一个是IronPython.dll,另一个是Microsoft.Scripting.dll库文件;其次在代码中添加引用如下所示:
using IronPython.Hosting;//引用ironpython文件
using Microsoft.Scripting.Hosting;//引用ironpython文件
在此C#代码中有两个点需要注意:第1点首先要创建ScriptEngine、ScriptScope和 ScriptSource执行的文件资源,并且一定要先用.Execute执行要执行的脚本文件,如果不执行会报错,报错内容是找不到用的result函数
第2点,获取函数的返回值采用.GetVariable<Func<object>>方法,object是函数返回类型,如果不确定是什么类型,采用object类型,后面再跟函数的名称,特别注意在result定义之后调用时一定要加括号 result(),或者是函数中需要的参数,否则会报错
最终点击button按钮之后执行结果如下图所示:
以上是C#调用Python脚本的简单的例子,如有错误的地方请大家批评指正,谢谢大家!
第一步:首先的安装IronPython2.7,这个网上有很多可以直接下载,默认安装路径就行(C:\Program Files (x86)\IronPython 2.7),其次将IronPython2.7路径添加到系统变量路径,这样便于在windows下cmd执行Python的.py脚本文件,在哪添加如下图所示:
操作:右击 我的电脑->属性->高级系统设置->环境变量->系统变量中找到Path,点击编辑,将安装路径添加到变量值中(注意:两个不同的路径之间用英文分号隔开),完成之后点击确定,这样将.py脚本文件直接拖到cmd.exe中,按enter键运行就可以执行,如下图所示:
对于怎么新建.py文件,可以首先新建一个txt文本文件,之后将其后缀改为.py,如何编写.py文件,可以下载编译器,我已上传编译器资源,大家可以下载
第二步:完成一个实例:C#调用一个Python脚本,脚本的执行结果为“Hello,World!”,并将执行结果显示到C#Form窗体的richTextbox中。
首先完成test01.py脚本文件的的编写,代码如下:
#import sys
#sys.path.append("C:\Program Files (x86)\IronPython 2.7\Lib")
#print "hello,world"
def result():
return "Hello,World!"
#就不用在意,代表代码被注释掉,定义了一个result函数,该函数返回的值是“Hello,World!”
其次在C#编译环境中添加test01.py文件,并且在添加完脚本文件之后,设置脚本文件的属性-“复制到输出目录”为始终复制
C#代码如下:
private void Test01_Click(object sender, EventArgs e)
{
try
{
ScriptEngine ssa = Python.CreateEngine();
ScriptScope ssb = ssa.CreateScope();
ScriptSource ssc = ssa.CreateScriptSourceFromFile("test01.py");
ssc.Execute(ssb);
//var result = ssc.Execute<object>("result");
var result = ssb.GetVariable<Func<object>>("result");
4000
richTextBox1.Text = result().ToString();
}
catch(SystemException ex)
{
MessageBox.Show(ex.Message, "Error");
}
}
在C#使用Python脚本文件要注意的的是,首先要将IronPython2.7安装路径中的两个dll文件添加到C#引用中一个是IronPython.dll,另一个是Microsoft.Scripting.dll库文件;其次在代码中添加引用如下所示:
using IronPython.Hosting;//引用ironpython文件
using Microsoft.Scripting.Hosting;//引用ironpython文件
在此C#代码中有两个点需要注意:第1点首先要创建ScriptEngine、ScriptScope和 ScriptSource执行的文件资源,并且一定要先用.Execute执行要执行的脚本文件,如果不执行会报错,报错内容是找不到用的result函数
第2点,获取函数的返回值采用.GetVariable<Func<object>>方法,object是函数返回类型,如果不确定是什么类型,采用object类型,后面再跟函数的名称,特别注意在result定义之后调用时一定要加括号 result(),或者是函数中需要的参数,否则会报错
最终点击button按钮之后执行结果如下图所示:
以上是C#调用Python脚本的简单的例子,如有错误的地方请大家批评指正,谢谢大家!
相关文章推荐
- C#如何调用Python执行脚本,并将执行结果显示值显示至C#界面
- Python脚本之django---mysql-记录主机性能数据到数据库-web站点管理数据库及web显示命令执行结果
- python调用其它脚本:pig,python,shell等等 (如何获取pig脚本执行的返回值)
- python调用其它脚本:pig,python,shell等等 (如何获取pig脚本执行的返回值)
- 如何在C#里面执行.SQL脚本(SQL SERVER)
- 使用C#调用cmd来执行sql脚本
- 如何在IIS中执行Python脚本
- C#中如何执行sql脚本?
- IronPython脚本调用C#实现的dll库
- [c#]如何使datagridview查询结果显示为别名(非数据库列名)
- Bash下如何执行python脚本文件
- 如何在C#中用程序执行指定的SQL脚本文件,实现自动安装创建数据库.txt
- C#中如何执行sql脚本?
- C# WINForm 如何关闭系统进程,调用cmd并执行命令(隐藏CMD窗口) - 赤色火焰 - 京华志
- c#的一个函数调用程序(怎样让用文本框输入m和n,结果用一个文本框(或列表框)显示出来。)
- 如何在windows bat脚本中调用Cygwin并执行命令?
- 如何在SharePoint里自定义WebPart将搜索结果显示在同一个界面
- C# 对于执行时间较长函数,如何显示“处理中...”
- 如何在SharePoint里自定义WebPart将搜索结果显示在同一个界面
- c#关闭系统进程以及如何调用cmd并执行命令