重定向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,但我还不确定这是否能满足我的要求。
如有任何帮助,我们将不胜感激。
感谢@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
循环。