private string GetPythonScriptName(PythonScriptType pythonScriptType)
        {
            switch (pythonScriptType)
            {
            case PythonScriptType.AddSaltNoise:
                return("AddSaltNoiseScript");

            case PythonScriptType.AddGaussionNoise:
                return("AddGaussionNoiseScript");
            }
            return(null);
        }
        protected override object EvaluateScript(string script, PythonScriptType evalType)
        {
            switch (evalType)
            {
            case PythonScriptType.Expression:
                return(engine.CreateScriptSourceFromString(script, SourceCodeKind.Expression).Execute(scope));

            case PythonScriptType.SingleStatement:
                return(engine.CreateScriptSourceFromString(script, SourceCodeKind.SingleStatement).Execute(scope));

            case PythonScriptType.Statements:
                return(engine.CreateScriptSourceFromString(script, SourceCodeKind.Statements).Execute(scope));
            }
            return(null);
        }
Beispiel #3
0
        protected override object EvaluateScript(string script, PythonScriptType evalType)
        {
            using (Py.GIL())
            {
                switch (evalType)
                {
                case PythonScriptType.Expression:
                    var result = Scope.Eval(script);
                    return(CPythonEvaluator.OutputMarshaler.Marshal(result));

                default:
                    Scope.Exec(script);
                    return(null);
                }
            }
        }
        private bool ExecutePythonScript(PythonScriptType pythonScriptType, Args[] args)
        {
            var pythonScriptName = GetPythonScriptName(pythonScriptType);
            var source           = _engine.CreateScriptSourceFromFile(".\\script\\" + pythonScriptName + ".py"); //设置脚本文件
            var scope            = _engine.CreateScope();

            //设置参数
            foreach (var arg in args)
            {
                scope.SetVariable(arg.ArgName, arg.ArgValue);
            }
            try
            {
                source.Execute(scope);
            }
            catch (Exception exception)
            {
                AddLog("" + exception.Message);
                return(false);
            }
            //MessageBox.Show(scope.GetVariable("result").ToString());
            return(bool.Parse(scope.GetVariable("result")));
        }
Beispiel #5
0
 protected abstract object EvaluateScript(string script, PythonScriptType type);