我正在使用opencv,并且有一个调用VideoCapture进行视频帧读取的请求,并且有一条print语句会在控制台上自动打印错误和信息,我想捕获这些输出并保存到文件中。
VideoCapture不返回此语句,而只是直接打印
我该怎么做?
答案 0 :(得分:1)
我不知道这样做是否是最好的方法,但是它会起作用。
您可以通过键入以下内容来读取程序打印到控制台的所有内容:
在这里,我们将print("test-test-test-test")
打印到控制台中,就像opencv
一样,并且使用p.stdout.readline()
您可以再次读入它。
import os
import sys
from subprocess import Popen, PIPE, STDOUT
script_path = os.path.join('name_of_your_program.py')
p = Popen([sys.executable, '-u', script_path],
stdout=PIPE, stderr=STDOUT, bufsize=1)
while True:
print("test-test-test-test")
string = p.stdout.readline()
print(string[0:3])
输出:
test-test-test-test
b'tes'
test-test-test-test
b"b'T"
test-test-test-test
b'tes'
(它读为二进制,因此您必须将其转换为字符串。)