我试图从我在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,但我还不确定这是否适用于我所要求的内容。
任何帮助将不胜感激。
答案 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
循环。