C#如何调用Python执行脚本,并将执行结果显示值显示至C#界面
2017-10-24 11:50
579 查看
在网上查找了很多资料,试了很多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");
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");
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调用其它脚本:pig,python,shell等等 (如何获取pig脚本执行的返回值)
- python调用其它脚本:pig,python,shell等等 (如何获取pig脚本执行的返回值)
- Python脚本之django---mysql-记录主机性能数据到数据库-web站点管理数据库及web显示命令执行结果
- python的subprocess:子程序调用(调用执行其他命令);获取子程序脚本当前路径问题
- window下java调用python脚本并读取Python运行结果
- ios调用系统应用界面显示如何显示中文
- ansible执行playbook时间显示的python脚本
- java调用perl脚本中cat和more命令的执行结果
- 如何打印sql语句的执行结果_python
- 【JavaScript 学习--06】Nodejs之如何调用 python脚本
- [AHK]python调用ahk,并读取ahk的执行结果
- 如何将STRSQL中执行SELECT语句的结果分屏显示
- 如何在SharePoint里自定义WebPart将搜索结果显示在同一个界面
- Python执行js脚本,调用node.js
- 如何在windows bat脚本中调用Cygwin并执行命令?
- 如何在IIS中执行Python脚本
- python3.6版本生成的python脚本如何打包为可独立执行的exe程序
- java调用linux中的shell脚本并返回执行结果
- 【Python】如何在VBA中调用Python脚本