У меня есть программа OpenCL с некоторой функцией printf (), и она запускается через pyOpenCL. Я хочу сохранить стандартный вывод в переменной. Мой реальный код для достижения этой цели:
from io import StringIO # Python3 use: from io import StringIO
import sys
old_stdout = sys.stdout
sys.stdout = mystdout = StringIO()
# fpga_conv = conv2d.Matmul(H, fpga_mtx, s_mask_ref.astype(np.int32), 1, 0)
# Call to the OpenCL program via pyOpenCL
fpga_ref = conv2d.Matmul(H_ans, fpga_mtx, s_mask_ans.astype(np.int32), 1, 1, (H_h, H_w))
sys.stdout = old_stdout
string = mystdout.getvalue() # Store stdout in a var
Но только перехватывает стандартный вывод python print () . Можно ли получить весь стандартный вывод? Единственный найденный мной способ - запустить скрипт в bash с инструкцией python module.py &> "ref.txt"
, которая хранит стандартный вывод printf () в файле ref.txt. Мне нужно запустить программу через IDE (в данном случае Spyder), а не в терминале bash. Любой sugesstion или трюк? Thx!