2015-11-13 180 views
1

我想使用ProcessStartInfo将参数从C#代码传递到Python。我有义务避免IronPython(通过创建一个范围),因为它与numpy不兼容。我找到了一些不成功的答案。 这里是我写的:将参数从C#传递到Python

var x = 8; 
     string arg = string.Format(@"C:\Users\ayed\Desktop\IronPythonExamples\RunExternalScript\plot.py", x); 
     try 
     { 
      Process p = new Process(); 
      p.StartInfo = new ProcessStartInfo(@"D:\WinPython\WinPython-64bit-2.7.5.3\python-2.7.5.amd64\python.exe", arg); 
      p.StartInfo.UseShellExecute = false; 
      p.StartInfo.RedirectStandardOutput = true; 
      p.Start(); 
      p.WaitForExit(); 
     } 
     catch (Exception ex) 
     { 
      Console.WriteLine("There is a problem in your Python code: " + ex.Message); 
     } 

     Console.WriteLine("Press enter to exit..."); 
     Console.ReadLine(); 

测试Python代码允许绘制曲线,打印x的值。确定曲线,但我得到这个异常:name'x'没有被定义。

如何正确地将一个变量传递给此Python代码?

+0

您将不得不修改Python代码以接受该值作为命令行参数或通过其标准输入。没有看到被调用的Python代码,我们不能告诉你要改变什么。 – Kyle

回答

1

它看起来像x应该是plot.py的参数,但是您忘记将x添加到arg

string.Format(@"C:\Users\ayed\Desktop\IronPythonExamples\RunExternalScript\plot.py {0}", x); 
+0

谢谢加布里埃尔,我刚刚尝试过这一点,并且保持同样的问题。 – Ala

+0

'plot.py'是否从命令行读取'x'的值? –

+0

不,我只是期待它从C#传递过来。从命令行读取x的值是什么意思? – Ala