【发布时间】:2018-11-19 17:32:10
【问题描述】:
我正在尝试从 C# 运行 python 脚本,我想逐行获取输出,而不是在最后。我觉得我错过了一些重要的东西,但不知道是什么。这是我目前所拥有的:
static void Main(string[] args)
{
var cmd = "C:/Users/user/Documents/script.py";
var process = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "C:/Users/user/AppData/Local/Programs/Python/Python36/python.exe",
Arguments = cmd,
UseShellExecute = false,
RedirectStandardOutput = true,
RedirectStandardError = true,
CreateNoWindow = true
},
EnableRaisingEvents = true
};
process.ErrorDataReceived += Process_OutputDataReceived;
process.OutputDataReceived += Process_OutputDataReceived;
process.Start();
process.BeginErrorReadLine();
process.BeginOutputReadLine();
process.WaitForExit();
Console.Read();
}
static void Process_OutputDataReceived(object sender, DataReceivedEventArgs e)
{
Console.WriteLine(e.Data);
}
还有python代码:
import time
for i in range(5):
print("Hello World " + str(i))
time.sleep(1)
【问题讨论】:
-
我们是否假设您获得了输出,但您一次获得了所有输出?问题中没有说明这一点。
-
我得到了输出,但在 5 秒结束时。
-
默认情况下
print不会刷新输出。有几种方法可以做到这一点,具体取决于您的 python 版本。见:stackoverflow.com/questions/230751/…
标签: c#