подавить вывод при импорте библиотеки в python - PullRequest
1 голос
/ 20 февраля 2020

У меня есть библиотека, которую мне нужно импортировать в мой код. Однако всякий раз, когда он импортируется, он выводит на консоль несколько строк данных. Как я могу подавить вывод?

Спасибо

Ответы [ 2 ]

3 голосов
/ 20 февраля 2020
import os
import sys

# silence command-line output temporarily
sys.stdout, sys.stderr = os.devnull, os.devnull

# import the desired library
import library

# unsilence command-line output
sys.stdout, sys.stderr = sys.__stdout__, sys.__stderr__
2 голосов
/ 20 февраля 2020

Вы можете попытаться перенаправить sys.stdout в StringIO для захвата любого текстового вывода. Таким образом, в основном все, что будет напечатано, будет сохранено в text_trap.

import io
import sys

#setup text trap
text_trap = io.StringIO()
sys.stdout = text_trap

#to reset the text trap
sys.stdout = sys.__stdout__

Рабочий пример:

from io import BytesIO as StringIO
import sys

if __name__ == "__main__":
    print "hello1"

    #setup text trap
    text_trap = StringIO()
    sys.stdout = text_trap

    print("hello2")

    #reset
    sys.stdout = sys.__stdout__
    print "hello3"

Вывод:

hello1
hello3
...