Python 捕获打印输出
我使用的是opencv,需要使用VideoCapture读取视频帧,控制台上有print语句自动打印错误和信息,我希望捕获这些输出并保存到文件中 VideoCapture没有返回这些声明,只是直接打印Python 捕获打印输出,python,opencv,Python,Opencv,我使用的是opencv,需要使用VideoCapture读取视频帧,控制台上有print语句自动打印错误和信息,我希望捕获这些输出并保存到文件中 VideoCapture没有返回这些声明,只是直接打印 我该怎么做 我不知道这是否是最好的方法,但它会奏效的 通过键入以下内容,您可以读入程序打印到控制台中的所有内容: 在这里,我们将printtest打印到控制台中,就像opencv那样,使用p.stdout.readline可以再次读取它 import os import sys from subp
我该怎么做 我不知道这是否是最好的方法,但它会奏效的 通过键入以下内容,您可以读入程序打印到控制台中的所有内容: 在这里,我们将printtest打印到控制台中,就像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])
输出:
它以二进制形式读取,因此您必须将其转换为字符串。您可以使用./yourprogram 2>logfile将所有stderr重定向到一个文件。另一种方法是将sys.stderr连接到一个文件,比如sys.stderr=openlogfile'w',或者更好地使用with的上下文管理器。这个可能的副本看起来就像我需要的一样,请尝试一下,谢谢
test-test-test-test
b'tes'
test-test-test-test
b"b'T"
test-test-test-test
b'tes'