抑制 python 中库导入的输出

jor*_*rto 7 python import

我有一个库需要在我的代码中导入。但是,每当导入它时,它都会向控制台输出几行数据。如何抑制输出?

谢谢

Gre*_*Guy 11

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__
Run Code Online (Sandbox Code Playgroud)

  • 非常小的一点,但我会使用 `sys.stdout = sys.stderr = os.devnull`。 (4认同)

jos*_*ppa 7

您可以尝试将 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__
Run Code Online (Sandbox Code Playgroud)

一个工作示例:

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"
Run Code Online (Sandbox Code Playgroud)

输出:

hello1
hello3
Run Code Online (Sandbox Code Playgroud)