如何从C#应用程序向IronPython传递命令行参数?

4
我如何将命令行参数从我的C#应用程序传递给IronPython 2.x?谷歌只提供了有关如何在Iron Python 1.x中执行此操作的结果。
static void Main(string[] args)
{
    ScriptRuntime scriptRuntime = IronPython.Hosting.Python.CreateRuntime();
    // Pass in script file to execute but how to pass in other arguments in args?
    ScriptScope scope = scriptRuntime.ExecuteFile(args[0]);
}

1
1.x的解决方案在2.x中不起作用了吗? - Lukasz Madon
1.x使用scriptEngine.Sys.argv,但不幸的是在2.x中已被移除。 - Danielb
1个回答

5
您可以通过以下C#代码设置sys.argv:
static void Main(string[] args)
{
    var scriptRuntime = Python.CreateRuntime();
    var argv = new List();
    args.ToList().ForEach(a => argv.Add(a));
    scriptRuntime.GetSysModule().SetVariable("argv", argv);
    scriptRuntime.ExecuteFile(args[0]);
}

具有以下Python脚本的情况
import sys
for arg in sys.argv:
    print arg

并且调用exe的方式如下:

Test.exe SomeScript.py foo bar

输出结果

SomeScript.py
foo
bar

另一个选择是根据此答案所述,将预先准备好的选项传递给Python.CreateRuntime

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接