0

以下はPythonプロセスへの呼び出しですが、StandardOutputは返されません。私は意図的にPythonファイルの中にタイプミスをして、StandardErrorを正常に返しました。StandardEutrorは表示されますが、C#でプロセスを呼び出すときにStandardOutputは表示されません

 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.invalidoperationexceptionmyProcess.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(); 
のためにのみ標準誤差を読んでいます
関連する問題