如何将 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()
到目前为止我写的代码是:
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()