StandardError 显示但 StandardOutput 在 C# 中调用进程时不显示

StandardError shows but StandardOutput doesn't when calling a Process in C#

下面是对 Python 进程的调用,但它不会 return StandardOutput。我故意在 Python 文件中打错了字,它成功地 return 编辑了 StandardError

        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();

这意味着我在路径中调用文件的方式是正确的。我还在命令提示符下尝试了它,它 returns 必要的输出没有错误。当我调试代码时,它说它抛出了一个 system.invalidoperationexception 类型的异常(在 myProcess.start() 之后)。

但它说 here 这是预期的。我错过了什么?预先感谢您的指导。

您正在阅读阅读器输出到

的标准错误
 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();