C#调用Python脚本,执行脚本中的函数
C#代码:
static void Main(string[] args) { ScriptEngine engine = Python.CreateEngine(); ICollection<string> Paths = engine.GetSearchPaths(); Paths.Add(@"D:\Program Files\Python2.7\libs"); Paths.Add(@"D:\Program Files\Python2.7\Lib"); engine.SetSearchPaths(Paths); ScriptSource source = engine.CreateScriptSourceFromFile("C:\\Users\\Administrator\\Desktop\\test.py"); CompiledCode code = source.Compile(); ScriptScope scope = code.DefaultScope; code.Execute(); var TelephoneNumberF= scope.GetVariable<Func<object, object>>("TelephoneNumberF");
dynamic obj = TelephoneNumberF("C:\\Users\\Administrator\\Desktop\\apk\\test.txt");
string t= obj[0]; Console.Read();
}
Python代码:
#coding:utf-8 TelephoneNumber='kk' def TelephoneNumberF(): return TelephoneNumber
解决的问题:
1、C#运行时找不到模块,用Paths.Add(@"D:\Program Files\Python2.7\libs");将标准库链接进去。
2、C#调取Python中函数怎么样调取的问题,var TelephoneNumberF= scope.GetVariable<Func<object, object>>("TelephoneNumberF");
TelephoneNumberF就是C#中的函数了。Func<object, object>,Python中有一个参数就写2个object,有2个参数就写3个object。
3、vs下装了IronPython,vs2013版。