joh*_*hnB 1 c# python redirectstandardoutput
我正在尝试编写一个 C# 程序来捕获 python 程序中的标准输出。我的问题是所有输出都在程序执行之后而不是实际发生时出现。例如,对于这个 python 程序:
print "Hello"
time.sleep(2)
print "Hello"
Run Code Online (Sandbox Code Playgroud)
我希望得到“你好”,两秒钟的间隔,然后是另一个“你好”。实际结果是两秒钟的间隔,然后是“你好”,“你好”。
如果我从命令行运行上面的 python 脚本,我会得到所需的行为。如果命令提示符可以执行此操作,那么我应该能够模拟该功能而不必重复刷新缓冲区。
我正在使用它从 C# 运行该过程:
_proc = new Process
{
StartInfo = new ProcessStartInfo
{
FileName = "C:\\Python27\\python.exe",
Arguments = pyScript,
RedirectStandardError = true,
UseShellExecute = false,
RedirectStandardOutput = true,
CreateNoWindow = true
}
};
_proc.OutputDataReceived += ProcOnOutputDataReceived;
_proc.Start();
_proc.BeginOutputReadLine();
Run Code Online (Sandbox Code Playgroud)
我可以运行这个 C# 代码(并更改上面的 ProcessStartInfo 属性以运行 C# 可执行文件)并且它的行为正确:
Console.WriteLine("Hello");
Thread.Sleep(2000);
Console.WriteLine("Hello");
Run Code Online (Sandbox Code Playgroud)
有了这个代码,我得到了“你好”,两秒钟的差距,然后是另一个“你好”。
知道为什么吗?我怎样才能让python解释器在发生时发送标准输出?
| 归档时间: |
|
| 查看次数: |
2482 次 |
| 最近记录: |