c# - 脚本参数和嵌入式 IronPython

标签 c# .net ironpython

我的 C# 应用程序中有一个使用 IronPython 2 的嵌入式脚本引擎。我创建了 Python 运行时并将一些类添加到全局命名空间,以便脚本可以将它们作为模块导入。

但是,我想不通的一件事(非常基本)是如何发送脚本参数。我意识到我可以只创建一个带有参数列表的变量,但必须有一个正确的方法来做到这一点。此外,以正确的“Python”方式进行操作允许我编译脚本并使用名为 Sphinx 的自动文档生成器。所以最终目标是能够使用:

import sys
sys.argv

在我的一个脚本中让它获取用户指定的参数(通过 C# 应用程序)。

现在,我使用以下方法调用脚本:

// set up iron python runtime engine
_engine = Python.CreateEngine();
_runtime = _engine.Runtime;
_scope = _engine.CreateScope();

// run script
_script = _engine.CreateScriptSourceFromFile(_path);
_script.Execute(_scope);

我曾尝试搜索 API 来添加脚本参数,但没有成功。我也尝试过将它们附加到脚本路径(示例中的 _path),但没有成功。我尝试使用 CreateScriptSourceFrom File 和 CreateScriptSourceFromSting(无论如何这是一个远景......)。

我正在尝试做的事情是否可行?

最佳答案

当您创建引擎时,您可以添加一个包含您的参数的“Arguments”选项:

IDictionary<string, object> options = new Dictionary<string, object>();
options["Arguments"] = new [] { "foo", "bar" };
_engine = Python.CreateEngine(options);

现在sys.argv将包含 ["foo", "bar"] .

可以设置options["Arguments"]任何实现 ICollection<string> 的东西.

关于c# - 脚本参数和嵌入式 IronPython,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1601364/

相关文章:

c# - 取消选中 Checkbox 不会触发 OnCheckedChanged

c# - 如何在 Win7 和 Win8 上访问存储的凭据(PasswordVault?)?

c# - CreditCardAttribute 使用哪种算法进行信用卡号格式验证

python - 从 IronPython Access MS Access 时出现问题

python - 如何在 Ironpython 中使用请求?

c# - 如何在 C# 中重定向 IronPython 的标准输出?

c# - 如何编写正确的正则表达式来获取文本?

c# - 如何继续从命名管道/流发送/读取消息

c# - 调用涉及由 WinForm 表单托管的 WPF 控件的调用永远不会返回

c# - 是否可以从 Cake 任务中调用 powershell 命令