如何将 stdout 动态保存到变量、列表或 numpy 数组中?

How to dynamically save stdout into a variable, a list, or a numpy array?

到目前为止我写的代码是:

import subprocess
from io import StringIO
import sys

sys.stdout = mystdout = StringIO()
result = subprocess.run(['python', '-m', 'serial.tools.miniterm', 'COM3'])
mystdout.getvalue()

我在串行端口上有一个 Arduino,它可以输出数据和研究,到目前为止,我发现我可以使用

sys.stdout = mystdout = StringIO()
#...
mystdout.getvalue()

将 stdout 保存到变量中,但问题是串口总是提供数据,因此 mystdout.getvalue() 永远不会 运行。

有没有办法将串口打印的内容保存到一个变量,一个列表或一个numpy数组中,比如说每次串口打印出另一个值,这是一个我可以修改的固定延迟(目前是 50 毫秒)?

您想要的是使用 Popen,因为它允许您在命令为 运行 时访问标准输出。 subprocess.run 执行命令并等待它完成。

试试这个

import subprocess

process = subprocess.Popen(
    ['python', '-m', 'serial.tools.miniterm', 'COM3'],
    shell=True,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE
)

for line in iter(process.stdout.readline, b""):
    parsed_line = line.decode().strip()

process.wait()