如何读取Python中的循环输出

2024-06-11 13:54:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个需要调用python代码的electronjs应用程序。我需要在Python中读取循环每次迭代的输出,并以电子形式显示。 我该怎么做?在

我尝试过child_进程的方式,但它只在整个脚本结束时打印输出。我在python脚本中的每次迭代结束时显示一些内容。在

示例:

Python:

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

电子: --一些脚本--

^{pr2}$

期望输出: 1

aaa级

aaa级

aaa级

aaa级

aaa级


Tags: 代码in脚本child应用程序示例内容for
1条回答
网友
1楼 · 发布于 2024-06-11 13:54:51

this answer类似,您可能需要刷新输出,以便数据不会在某个缓冲区中延迟:

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

但是,对于您给出的玩具示例,这对我的测试没有任何影响,因为5个值都是快速连续地打印出来的。在本例中,即使使用刷新,也可以一次性将所有值翻转过来。在

如果实际数据以较低的速率生成,则显式刷新可能已经是您的解决方案。以下示例为我生成了单独的读取事件:

^{pr2}$

如果在您的实际用例中,在同一事件中仍可能发生两条“消息”被翻转,并且您确实希望分别处理它们,那么您只需将输出(例如,逐行)拆分并分别处理每个消息。在

这要求输出是可拆分的。在玩具示例中,每个数字都打印在一个单独的行上,然后您可以调用^{},给您一个行列表。在

如何实现这一点在很大程度上取决于Python程序的实际输出。在


这是节点.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)`)
})

相关问题 更多 >