Остановить функцию от записи до stdout

У меня есть эта строка в моем коде:

writer = cv.CreateVideoWriter('video.avi', cv.CV_FOURCC('X','V','I','D'), 30 ,(480,800), 1) 

Какие выходные данные для консоли:

 Output #0, avi, to 'video.avi': Stream #0:0: Video: mpeg4, yuv420p, 480x800, q=2-31, 24576 kb/s, 90k tbn, 30 tbc 

Я хочу, чтобы он не печатал ничего в stdout, но сохранял возможность выводить в код что-то еще. Как я могу это достичь?

Я попробовал это, но это не сработало.

 class NullStream: def write(self, text): pass sys.stdout = NullStream() sys.stderr = NullStream() print "hello" #This doesn't outputs #This function still outputs to console: writer = cv.CreateVideoWriter('video.avi', cv.CV_FOURCC('X','V','I','D'), 30 ,(480,800), 1) sys.stdout = sys.__stdout__ sys.stderr = sys.__stderr__ 

  • Захват stdout из скрипта в Python
  • Обтекание подпроцессом 'stdout / stderr
  • Nohup и Python -u: он по-прежнему не регистрирует данные в реальном времени
  • Как перенаправить stdout и stderr в logger в Python
  • python unicode обрабатывает различия между print и sys.stdout.write
  • Могу ли я перенаправить stdout в python в какой-то строковый буфер?
  • Отображение вывода подпроцесса в stdout и перенаправление его
  • Перенаправление stdio из команды в os.system () в Python
  • 2 Solutions collect form web for “Остановить функцию от записи до stdout”

    Это не OpenCV, которая выводит эту информацию. Это FFMPEG (который вызывается OpenCV).

    Вы можете перекомпилировать FFMPEG, чтобы отключить эти отладки.

     import os import sys saved_stdout, saved_stderr = sys.stdout, sys.stderr sys.stdout = sys.stderr = open(os.devnull, "w") writer = cv.CreateVideoWriter('video.avi', cv.CV_FOURCC('X','V','I','D'), 30 ,(480,800), 1) sys.stdout, sys.stderr = saved_stdout, saved_stderr print 'Now this will print to stdout' 

    Демо-версия:

     >>> import os >>> import sys >>> saved_stdout, saved_stderr = sys.stdout, sys.stderr >>> sys.stdout = sys.stderr = open(os.devnull, "w") >>> print 'hello world' # no output >>> sys.stderr.write('Invisible Error!\n') # no ouput >>> sys.stdout, sys.stderr = saved_stdout, saved_stderr >>> print 'goodbye world' goodbye world >>> sys.stderr.write('Error!\n') Error! 
    Python - лучший язык программирования в мире.