如何在python中抑制stdout警告消息

时间:2017-08-23 19:45:10

标签: python python-2.7

当尝试使用请求模块在Python中进行API调用时,由于验证被设置为false,因此我收到一条警告消息,打印到stdout。我正在寻找如何抑制这些警告消息从打印到stdout。我已经尝试实现urllib3.disable_warnings()函数来实现这一目标,但没有运气。任何指针都是适用的。

import urllib3
import requests

HOSTNAME = "https://website.example.com"
ADMIN = "admin"
PW = "password"

class ApiCall(object):

    def __init__(self, username=ADMIN, password=PW, url=HOSTNAME, ssl_warnings=False, ssl_verify=False):

    # disable SSL warnings by default
    if not ssl_warnings:
        urllib3.disable_warnings()

    # create requests token to be used across the program
    self.client = requests.Session()
    self.client.auth = (username, password)
    self.client.verify = ssl_verify

def search(self, call=None, name=None):

    ret = self.client.get(HOSTNAME + call)

1 个答案:

答案 0 :(得分:0)

作为这样做的一种附加方式,您可以使上下文管理器在某些上下文中重定向stdout:

例如,我要将stdout重定向到stderror

import contextlib
import sys
@contextlib.contextmanager
def redirectOut():
    sout = sys.stdout
    sys.stdout = sys.stderr
    yield
    sys.stdout = sout

然后您可以将其与with

一起使用
with redirectOut():
    #do your stuff here

该上下文中的所有内容都将打印到stderr