2017-08-23 87 views
0

當試圖使用requests模塊在Python中進行API調用時,由於驗證設置爲false,我得到了一條打印到stdout的警告消息。我正在尋找如何從打印到標準輸出抑制這些警告消息。我已經嘗試實現urllib3.disable_warnings()函數來完成此操作,但沒有運氣。任何指針appriciated。如何在python中抑制stdout警告消息

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

請求包是它自己的'urllib3' - 'requests.packages.urllib3.disable_warnings()'? – AChampion

+0

我已經將此添加到我的代碼中,但我相信我在錯誤的上下文中使用,我正在查找以及如何使用它。 – SkyVar

回答

0

至於這樣做的aditional的方式,你可以做一個上下文管理器在某些情況下,以將stdout:

例如IM要去重定向stdoutstderror

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