2017-08-23 8 views
0

リクエストモジュールを使用してPythonでAPI呼び出しを行うと、falseに設定されているため、stdoutに警告メッセージが出力されます。私はこれらの警告メッセージを印刷から標準出力に抑制する方法を探しています。私はすでにこれを達成するためにurllib3.disable_warnings()関数を実装しようとしましたが、運がありません。すべてのポインタは、appriciatedです。それを行うのaditional方法として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

'requests'パッケージはそれ自身の' urllib3' - 'requests.packages.urllib3.disable_warnings()'ですか? – AChampion

+0

これを私のコードに追加しましたが、間違ったコンテキストで使用していると思います。私はこれを探しています。 – SkyVar

答えて

0

、あなたはいくつかのコンテキストで標準出力をリダイレクトするためにコンテキストマネージャを行うことができます。

例のイムのために次に、あなたを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に出力されます

関連する問題