重定向 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
循环。
我正在尝试重定向我用 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
循环。