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

本文关键字:Python 读取 标准输出 重定向 | 更新日期: 2023-09-27 17:59:42

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

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

我希望能够同时运行C#和Python项目,并在不使用中间本地文件(CSV)的情况下将数据流直接从C#传输到Python项目。

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

我还不知道如何从Python文件中获取流中的数据。这篇文章有助于更好地理解如何处理它,但我仍然停滞不前。

我也在研究子流程。Popen.communation使用Python,但我还不确定这是否能满足我的要求。

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

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

感谢@Quantic提供了一些优秀的资源。使用subprocess.Popen,我可以运行我的C#项目的builded.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循环。