My C# code:
static string pyExe = "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Python37_64\\python.exe";
var psi = new Process();
string name = "show_ing.py";
string script = "C:\\Users\\micosin\\source\\practiceDotNet\\python\\" + name;
C:\Users\micosin\source\practiceDotNet\python
psi.StartInfo.FileName = pyExe;
psi.StartInfo.Arguments = script;
psi.StartInfo.UseShellExecute = false;
psi.StartInfo.CreateNoWindow = false;
psi.StartInfo.RedirectStandardOutput = true;
psi.StartInfo.RedirectStandardError = true;
psi.StartInfo.StandardErrorEncoding = Encoding.UTF8;
psi.StartInfo.StandardOutputEncoding = Encoding.UTF8;
psi.OutputDataReceived += new DataReceivedEventHandler(p_OutputDataReceived);
psi.Start();
psi.BeginOutputReadLine();
psi.WaitForExit();
...
static void p_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
Console.WriteLine(e.Data);
}
Python show_ing.py script for creating test output:
# -*- encoding=utf-8 -*-
import sys
import time
print(sys.argv)
while True:
print('PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP')
time.sleep(1)
I want get output while the script is running (hence the infinite loop). In testing I only get the output of the script if it exits (no loop).