gpt4 book ai didi

python - 如何在Python中读取Python的循环输出

转载 作者:行者123 更新时间:2023-12-03 12:34:30 25 4
gpt4 key购买 nike

我正在开发一个electronjs应用程序,该应用程序需要调用python代码。我需要在Python中读取循环的每个迭代的输出并将其显示在Electron中。
我怎样才能做到这一点?

我尝试过child_process方式,但是仅在整个脚本结束时才输出输出。我将在python脚本的每次迭代结束时显示一些内容。

例子:

Python:

for i in range(5):
print(i)

Electron :
-一些脚本-
python_process.on('stdout', function(data_returned){
console.log(data_returned);
console.log('aaa');
});

所需的输出:
1个

aa

2个

aa

3

aa

4

aa

5

aa

最佳答案

this answer相似,您可能需要刷新输出,以便数据不会在某些缓冲区中徘徊:

for i in range(5):
print(i, flush=True)

但是,对于您给出的玩具示例,这对我的测试没有影响,因为无论如何快速连续打印5个值。在此示例中,即使进行刷新,所有值也都将被一次性翻转。

如果您的实际数据生成速度较低,则显式刷新可能已成为您的解决方案。以下示例为我生成了单独的读取事件:
import time
for i in range(5):
print(i, flush=True)
time.sleep(1)

如果在您的实际用例中,仍然可能在同一事件中同时发生两个“消息”的切换,并且您确实想单独处理它们,那么您只需要拆分输出(例如,逐行)并分别处理每个消息。

这要求您的输出是可拆分的。在玩具示例中,每个数字都打印在单独的一行上,然后您可以调用 splitlines ,从而为您提供这些行的列表。

如何实现此功能在很大程度上取决于Python程序的实际输出。

这是我用于测试的Node.js代码。它使用 script.py调用Python解释器(这是上面的代码示例所要去的地方)。 Javascript代码输出stdout数据并跟踪数据事件的总数。

const { spawn } = require('child_process')
const myproc = spawn('python', ['script.py'])

let counter = 0

myproc.stdout.on('data', data => {
console.log(`stdout: ${data}`)
counter++
})

myproc.on('close', () => {
console.log(`child process exited after ${counter} read(s)`)
})

关于python - 如何在Python中读取Python的循环输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56543857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com