How can I pass command-line arguments in IronPython?
Asked Answered
U

2

1

I am working with IronPython and have got it working somehow. Though, there seems to be no resource on passing command-line arguments to Iron Python. How can I pass command-line arguments to a python program from my C# code?

setup = new ScriptRuntimeSetup();
                setup.LanguageSetups.Add(IronPython.Hosting.Python.CreateLanguageSetup(null));
                runtime = new ScriptRuntime(setup);
                runtime.IO.RedirectToConsole();
                m_engine = runtime.GetEngine("IronPython");
                m_scope = m_engine.CreateScope();
                source = m_engine.CreateScriptSourceFromString("search_movie.py \""+CommandTextBox.Text+"\"", SourceCodeKind.InteractiveCode);
                source.Execute(m_scope);

What more do I need to do here? As you can see, the name of the python file there is search_movie.py and it takes a movie-name as argument.

Upstroke answered 10/5, 2011 at 12:5 Comment(0)
L
1

You need to set the values of sys.argv.

engine.Sys.argv = List.Make(args);

Check out http://www.voidspace.org.uk/ironpython/custom_executable.shtml for more details

Latty answered 13/5, 2011 at 13:35 Comment(0)
I
2

C# Code:

string file = @"C:\Users\M GHOUS\Source\Repos\dotnet_python\dotnet_python\test.py";
ScriptEngine engine = Python.CreateEngine();
ScriptScope scope = engine.CreateScope();
scope.SetVariable("var1", "data of var1");
scope.SetVariable("var2", "data of var2");
scope.SetVariable("var3", "data of var3");
engine.ExecuteFile(file, scope);

Python:

print(var1)
print(var2)
print(var3)
Indorse answered 15/1, 2019 at 17:46 Comment(0)
L
1

You need to set the values of sys.argv.

engine.Sys.argv = List.Make(args);

Check out http://www.voidspace.org.uk/ironpython/custom_executable.shtml for more details

Latty answered 13/5, 2011 at 13:35 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.