I have an embedded scripting engine in my C# application that uses IronPython 2. I create the Python runtime and add a few classes to the global namespace so that the script can import them as modules.
However, one (pretty basic) thing I can't figure out is how to send script arguments. I realize that I could just create a variable with a list of arguments, but there must be a proper way to do it. Also, doing it in the proper 'Python' way allows me to compile the scripts and use an automated document builder called Sphinx. So the ultimate goal is to be able to use:
import sys
sys.argv
In one of my scripts and have it get the arguments the user specified (through the C# app).
Right now, I call the script by using:
// set up iron python runtime engine
_engine = Python.CreateEngine();
_runtime = _engine.Runtime;
_scope = _engine.CreateScope();
// run script
_script = _engine.CreateScriptSourceFromFile(_path);
_script.Execute(_scope);
And I've tried searching for an API to add script arguments with no luck. I've also tried appending them to the script path (_path in example) with no luck. I tried with CreateScriptSourceFrom File and CreateScriptSourceFromSting (which was a long shot anyway...).
Is what I'm trying to do even possible?
解决方案
When you create the engine, you can add an "Arguments" option the contains your arguments:
IDictionary options = new Dictionary();
options["Arguments"] = new [] { "foo", "bar" };
_engine = Python.CreateEngine(options);
Now sys.argv will contain ["foo", "bar"].
You can set options["Arguments"] to anything that implements ICollection.
本文介绍如何在IronPython中为脚本传递参数。通过设置创建引擎时的Arguments选项,可以使sys.argv包含指定的参数值。
1786

被折叠的 条评论
为什么被折叠?



