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

时间:2016-08-02 18:00:26

标签: c# python stream stdout

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

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

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

我已经在SO和MSDN文档中完成了自己的搜索工作。我正在使用ProcessStartInfo.RedirectStandardOutput Property来重定向C#应用程序的控制台输出。

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

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

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

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循环。