捕捉打印输出

时间:2019-01-05 20:27:27

标签: python opencv

我正在使用opencv,并且有一个调用VideoCapture进行视频帧读取的请求,并且有一条print语句会在控制台上自动打印错误和信息,我想捕获这些输出并保存到文件中。

VideoCapture不返回此语句,而只是直接打印

我该怎么做?

1 个答案:

答案 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'

(它读为二进制,因此您必须将其转换为字符串。)