c#(IronPython)调用Python方法
直接一段代码演示
public void StartTCP()
{
ScriptEngine engine = Python.CreateEngine();
var paths = engine.GetSearchPaths();
List<string> lstPath = new List<string>();
lstPath.AddRange(paths);
lstPath.Add("Script");
// lstPath.Add(@"D:\Program Files\Python\Python37\Lib");
lstPath.Add(@"D:\Program Files\IronPython 2.7\Lib");
engine.SetSearchPaths(lstPath.ToArray());
var scope = engine.CreateScope();
var source = engine.CreateScriptSourceFromFile("Script/TCPClsClient.py");
dynamic result= source.Execute(scope);
//调用函数的2种方法
// 第一种,通过参数方式转换委托调用,看起来不太简洁
var SetAddress = scope.GetVariable<Action<string,int>>("SetAddress");
var Con = scope.GetVariable<Action>("Connect");
var SendData = scope.GetVariable<Action<string>>("Send");
var Revcive = scope.GetVariable<Action>("Revcive");
var Close = scope.GetVariable<Action>("Close");
SetAddress("localhost", 7777);
Con();
SendData("jinyu");
Revcive();
Close();
//第二种,没有智能化提示,必须要转换为dynamic
result = scope;
result.SetAddress(result, "localhost", 7777);
result.Connect();
result.Send("jinyu");
result.Recvice();
result.Close();
//因为是2.7版本,所以不能支持3.X版本的类方法调用
//例如: result= scope.GetVariable("TCPClsClient");//调用构造,返回实例
//result.SetAddress(result, "localhost", 7777);//不能执行,版本不支持3.X类函数调用
}
c#(IronPython)调用Python方法的更多相关文章
- C#中调用python方法
最近因为项目设计,有部分使用Python脚本,因此代码中需要调用python方法. 1.首先,在c#中调用python必须安装IronPython,在 http://ironpython.codepl ...
- c#利用IronPython调用python的过程种种问题
c#利用IronPython调用python的过程种种问题 小菜鸟一枚,最新学习了Python,感觉语言各种简短,各种第三方类库爽歪歪,毕竟之前是从c#转来的,看到Python的request类各种爽 ...
- odoo14 button 事件调用python方法如何传递参数
1 <field name="user_ids" 2 mode="kanban" 3 nolabel="1" 4 options=&q ...
- VS调用python方法
1. 安装python3.7 2. Vs2010中配置python: 3.添加头文件:#include <Python.h> 4.问题:error LNK2001: 无法解析的外部符号 ...
- 在java中调用python方法
1.http://sourceforge.net/projects/jython/下载jython包,把其中的jython.jar添加到工程目录 示例: 1.摘自:http://blog.csdn.n ...
- C#调用Python 脚本语言
1. 安装IronPython http://pan.baidu.com/s/1qW4jNJ2 下载IronPython 2.7 安装下载下来的安装包 2. 创建项目 创建一个C#的Windows窗 ...
- 在Java中调用Python
写在前面 在微服务架构大行其道的今天,对于将程序进行嵌套调用的做法其实并不可取,甚至显得有些愚蠢.当然,之所以要面对这个问题,或许是因为一些历史原因,或者仅仅是为了简单.恰好我在项目中就遇到了这个问题 ...
- 【.NET调用Python脚本】C#调用python requests类库报错 'module' object has no attribute '_getframe' - IronPython 2.7
最近在开发微信公众号,有一个自定义消息回复的需求 比如用户:麻烦帮我查询一下北京的天气? 系统回复:北京天气,晴,-℃... 这时候需要根据关键字[北京][天气],分词匹配需要执行的操作,然后去调用天 ...
- 在.Net Framework中调用Python的脚本方法 (以VB和C#为例)
某个项目中涉及到这样一个情景: VB/C#写的原始项目要调用Python的一些方法完成特殊的操作, 那么这就涉及到了,在.Net Framework中如何调用Python的脚本方法. 具体步骤流程如下 ...
随机推荐
- Android 初识Retrofit
什么是 Retrofit ? Retrofit 是一套 RESTful 架构的 Android(Java) 客户端实现,基于注解,提供 JSON to POJO(Plain Ordinary Java ...
- 【JAVA语法】03Java-继承性
继承的实现 继承的限制 子类对象的实例化 方法的重写 Super关键字 重写与重载的区别 final关键字 抽象类 接口 一.继承的实现 1.1 格式 class 子类 extends 父类 {} c ...
- Oracle基础之分析表
analyze table tablename compute statistics; analyze index indexname compute statistics; (analyze 不会重 ...
- c# 控制台输出txt文件
string tempFileName = "DETAIL_" + DateTime.Now.ToString("yyyyMMddHHmmssffff") + ...
- vs2015使用技巧-------- 查看类关系图
1.在项目上点击右键,点击“查看”------->“查看类图”: 2.生成的类图如下:
- SQL Server ->> 无法将数据库从SINGLE_USER模式切换回MULTI_USER模式(Error 5064)
报错信息如下: Msg 5064, Level 16, State 1, Line 1Changes to the state or options of database 'test' cannot ...
- SQL Server ->> OFFSET & FETCH子句
SQL Server 2012引入OFFSET + FETCH字句.它俩出现在SELECT .... ORDER BY ...后面.作用是告诉SQL Server在结果集中忽略前N行然后取前M行出来. ...
- CXPACKET等待事件
今天收到数据库预警,发现连接数较多.于是立马登录查看机器的基本情况: select * from sys.sysprocesses 查看了一下连接数,发现有两个进程都处于CXPACKET状态,而且看得 ...
- oracle客户端plsql安装
1.确认版本 自己的操作系统版本(32位还是64位),oracle instant client(oracle客户端版本)和plsql版本 我自己的版本是:oracle客户端版本 64位,plsql ...
- lua之m进制转换为n进制-任意进制转换算法
够无聊的写这个,为防止需要的人也无聊一遍,写个吧 算法有n种,但是,咱们一种就够用了 --数组倒序排列 local function orderByDesc( input ) local output ...