重定向 C# 标准输出并使用 Python 读取它

Redirecting C# Standard Output and Reading it with Python

我正在尝试重定向我用 C# 编写的命令行项目的标准输出并读取 Python 文件中的数据。

目前,C# 应用程序将从传感器读取的数据写入 CSV 文件。稍后我必须 运行 Python 文件来获取和处理数据(必须在 Python 中完成并且数据收集必须在 .NET 中完成才能使用 SDK)。

我希望能够同时 运行 C# 和 Python 项目并将数据流直接从 C# 传输到 Python 项目而无需使用中间本地文件 (CSV)。

我自己在 SO 和 MSDN 文档中进行了搜索。我正在考虑使用 ProcessStartInfo.RedirectStandardOutput Property 重定向 C# 应用程序的控制台输出。

我还不知道如何从 Python 文件中获取此流中的数据。 This article 有助于更好地理解如何处理它,但我仍然卡住了。

我也在查看 Python 中的 subprocess.Popen.communicate,但我不确定这是否适用于我的要求。

如有任何帮助,我们将不胜感激。

感谢@Quantic 提供了一些很棒的资源。使用 subprocess.Popen,我可以 运行 我的 C# 项目的内置 .exe,并将输出重定向到我的 Python 文件。我现在能够 print() 输出到 Python 控制台所有输出到 C# 控制台的信息 (Console.WriteLine())。

Python代码:

from subprocess import Popen, PIPE, STDOUT

p = Popen('ConsoleDataImporter.exe', stdout = PIPE, stderr = STDOUT, shell = True)

while True:
    line = p.stdout.readline()
    print(line)
    if not line:
        break

这会在创建 .NET 项目时逐行获取控制台输出,并在项目终止时跳出封闭的 while 循环。