0

下面是對Python進程的調用,但它不返回StandardOutput。我專門在Python文件中犯了一個錯字,併成功返回StandardErrorStandardError會顯示,但標準輸出不會在調用C#中的進程時出現

 string pythonExe = @"../../../Vokaturi/python.exe"; 

     string pythonFile = @"../../../Vokaturi/test.py"; 

     ProcessStartInfo myProcessStartInfo = new ProcessStartInfo(pythonExe); 

     myProcessStartInfo.UseShellExecute = false; 
     myProcessStartInfo.RedirectStandardOutput = true; 
     myProcessStartInfo.RedirectStandardError = true; 

     myProcessStartInfo.Arguments = pythonFile; 

     Process myProcess = new Process(); 
     myProcess.StartInfo = myProcessStartInfo; 
     myProcess.Start(); 

     StreamReader myStreamReaderError = myProcess.StandardError; 
     string myErrorString = myStreamReaderError.ReadToEnd(); 

     StreamReader myStreamReaderOutput = myProcess.StandardError; 
     string myOutputString = myStreamReaderOutput.ReadToEnd(); 
     myProcess.WaitForExit(); 
     myProcess.Close(); 

這意味着我調用路徑中的文件的方式是正確的。我也在命令提示符下嘗試了它,並且它返回了必要的輸出而沒有錯誤。當我調試代碼時,它說它會拋出system.invalidoperationexception(在myProcess.start()之後)的異常。

enter image description here

但它說here,它的預期。我錯過了什麼?預先感謝您的指導。

回答

0

您正在閱讀的唯一標準誤差爲readeroutput太

StreamReader myStreamReaderError = myProcess.StandardError; 
    string myErrorString = myStreamReaderError.ReadToEnd(); 

    StreamReader myStreamReaderOutput = myProcess.StandardError; 
    string myOutputString = myStreamReaderOutput.ReadToEnd(); 

變化太

StreamReader myStreamReaderError = myProcess.StandardError; 
    string myErrorString = myStreamReaderError.ReadToEnd(); 

    StreamReader myStreamReaderOutput = myProcess.StandardOutput; 
    string myOutputString = myStreamReaderOutput.ReadToEnd(); 
相關問題