如何使用IronPython向Python脚本传递参数使用系统集合;使用System.IO;使用System.Windows.Forms;使用System.Linq;使用系统文本;使用System.Threading.Tasks;使用IronPython.Hosting;使用Microsoft.Scripting.Hosting;使用IronPython。运行;namespaceRunPython{classProgram{staticvoidMain(string[]args){ScriptRuntimeSetupsetup=Python.CreateRuntimeSetup(null);ScriptRuntimeruntime=newScriptRuntime(setup);ScriptEngine引擎=Python.GetEngine(运行时);engine.CreateScriptSourceFromFile("HelloWorld.py");ScriptScope作用域=engine.CreateScope();来源.执行(范围);我无法理解每一行代码,因为我使用C#的经验有限。如何更改此代码以在运行时将命令行参数传递给我的python脚本?谢谢大家给我指明了正确的方向。出于某种原因,engine.sys似乎不再适用于较新版本的IronPython,因此必须使用GetSysModule。这是我的代码的修订版,它允许我更改argv:usingSystem;使用系统集合;使用System.Collections.Generic;使用System.IO;使用System.Windows.Forms;使用System.Linq;使用System.Text使用IronPython.Hosting;使用Microsoft.Scripting;使用Microsoft.Scripting.Hosting;使用IronPython.Runtime;namespaceRunPython{classProgram{staticvoidMain(string[]args){ScriptRuntimeSetupsetup=Python.CreateRuntimeSetup(null);ScriptRuntimeruntime=newScriptRuntime(setup);ScriptEngine引擎=Python.GetEngine(运行时);ScriptSourcesource=engine.CreateScriptSourceFromFile("HelloWorld.py");ScriptScope作用域=engine.CreateScope();=新列表();//做一些事情并填充argvargv.Add("foo");argv.Add("栏");engine.GetSysModule().SetVariable("argv",argv);source.Execute(范围);}}}“命令行参数”只存在于进程中。如果你以这种方式运行你的代码,你的python脚本很可能会在它启动时看到传递给你的进程的参数(没有Python代码,很难说)。正如评论中所建议的,您还可以覆盖命令行参数。如果您想做的是传递参数,而不一定是命令行参数,那么有几种方法。最简单的方法是将变量添加到您定义的范围并在脚本中读取这些变量。例如:intvariableName=1337;scope.SetVariable("变量名",变量名);在python代码中,您将拥有variableName变量。虽然我认为使用设置变量的@Discord会起作用,但需要将sys.argvs更改为variableName。所以,要回答这个问题,你应该使用engine.Sys.argv:Listargv=newList();//做一些事情并填充argvengine.Sys.argv=argv;参考资料:http://www.voidspace.org.uk/ironpython/custom_executable.shtml如何在IronPython中传递命令行参数?以上就是C#学习教程:HowtouseIronPythontopassparameterstoPythonscripts。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
