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版。

posted @ 2016-01-26 15:50  rovoqo  阅读(1032)  评论(2编辑  收藏  举报