2016-12-21 10 views
0

Pythonの警告メッセージが出力

#! /usr/bin/env python 
# -*- coding: utf-8 -*- 

import sys 
import warnings 

if sys.version_info[0] >= 3: 
    ... 
else: 
    warnings.warn("Python 3.x is required!", RuntimeWarning) 

そして他の私が手出力は次のようになります。

Warning (from warnings module): 
    File "C:\Users\..., line 10 
    warnings.warn("Python 3.x is required!", RuntimeWarning) 
RuntimeWarning: Python 3.x is required! 

出力の最初の3行を取り除くだけ取得する方法はありますdisplay "RuntimeWarning:Python 3.xが必要です!" ?

+4

最後の行だけを出力したい場合は、印刷しないでください。 –

+1

あなたは 'warnings.showwarning = send_warnings_to_log'を試しましたか? – ArmenB

答えて

2

https://pymotw.com/2/warnings/#stack-level-in-warnings警告

スタックのレベルからあなたは、可能な場合、デフォルトでは、警告メッセージは、それを生成したソース 行が含まれていることに気づくでしょう。しかし、実際に警告メッセージを表示しているコード行を参照するのは便利なことではありません。 代わりに、 警告を含む関数が呼び出された 行を見つけるために、スタックまでの距離をwarn()に伝えることができます。その方法では、 deprecated関数のユーザーは、関数の の代わりに、関数が呼び出された場所を参照します。

# warnings_warn_stacklevel.py 
import warnings 

def old_function(): 
    warnings.warn(
     'old_function() is deprecated, use new_function() instead', 
     stacklevel=2) 

def caller_of_old_function(): 
    old_function() 

caller_of_old_function() 

(この例では警告することに注意してください))は、(スタック2つのレベル、自身のための1つおよびold_functionための1つを上がる必要があります。

$ python warnings_warn_stacklevel.py 

warnings_warn_stacklevel.py:18: UserWarning: old_function() is deprecated, use new_function() instead old_function() 
+0

stacklevel = 2に設定すると、なぜこのエラーが発生しますか? 'ファイル "C:\ Users \ ... \ Python \ Python35 \ lib \ idlelib \ run.py"、行351 exec(code、self.locals)' –

関連する問題