2015-11-13 95 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