关于python:Catch打印输出

Catch print output

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

videocapture没有返回此语句,它只是直接打印

我该怎么做?


我不知道这是不是最好的方法,但它会起作用的。

通过键入以下命令,您可以读取程序打印到控制台中的所有内容:

在这里,我们将print("test-test-test-test")打印到控制台中,就像opencv一样,使用p.stdout.readline()您可以再次读取它。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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])

输出:

1
2
3
4
5
6
test-test-test-test
b'tes'
test-test-test-test
b"b'T"
test-test-test-test
b'tes'

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