ライブラリを使用して(現時点では)役に立たない警告を大量にスローするコードを使用していwarnings
ます。ドキュメントを読んで(/スキャンして)、単一の機能の警告を無効にする方法しか見つかりませんでした。しかし、コードをあまり変更したくありません。
のような旗はありpython -no-warning foo.py
ますか?
あなたは何をお勧めします?
ライブラリを使用して(現時点では)役に立たない警告を大量にスローするコードを使用していwarnings
ます。ドキュメントを読んで(/スキャンして)、単一の機能の警告を無効にする方法しか見つかりませんでした。しかし、コードをあまり変更したくありません。
のような旗はありpython -no-warning foo.py
ますか?
あなたは何をお勧めします?
Python docsのTemporarily Suppressing Warningsセクションを見てください。
非推奨の関数など、警告が発生することがわかっているが警告を表示したくないコードを使用している場合は、
catch_warnings
コンテキスト マネージャーを使用して警告を抑制することができます。import warnings def fxn(): warnings.warn("deprecated", DeprecationWarning) with warnings.catch_warnings(): warnings.simplefilter("ignore") fxn()
私はそれを容認しませんが、これですべての警告を抑制することができます:
import warnings
warnings.filterwarnings("ignore")
元:
>>> import warnings
>>> def f():
... print('before')
... warnings.warn('you are warned!')
... print('after')
...
>>> f()
before
<stdin>:3: UserWarning: you are warned!
after
>>> warnings.filterwarnings("ignore")
>>> f()
before
after
-W
オプションがあります。
python -W ignore foo.py
環境変数を定義することもできます (2010 年の新機能 - つまり python 2.7)。
export PYTHONWARNINGS="ignore"
次のようにテストします:デフォルト
$ export PYTHONWARNINGS="default"
$ python
>>> import warnings
>>> warnings.warn('my warning')
__main__:1: UserWarning: my warning
>>>
警告を無視する
$ export PYTHONWARNINGS="ignore"
$ python
>>> import warnings
>>> warnings.warn('my warning')
>>>
非推奨の警告については、how-to-ignore-deprecation-warnings-in-python をご覧ください。
ここにコピペ…
warnings
モジュールのドキュメントから:
#!/usr/bin/env python -W ignore::DeprecationWarning
Windows を使用している場合:-W ignore::DeprecationWarning
引数として Python に渡します。intにキャストして、問題を解決することをお勧めします。
(Python 3.2 では、非推奨の警告はデフォルトで無視されることに注意してください。)
または:
import warnings
with warnings.catch_warnings():
warnings.filterwarnings("ignore", category=DeprecationWarning)
import md5, sha
yourcode()
これで、他のすべてのDeprecationWarning
s が取得されますが、次の原因によるものは取得されません。
import md5, sha
「warning.filterwarnings()」はすべての警告を抑制していないため、次の方法を使用することをお勧めします。
import logging
for name in logging.Logger.manager.loggerDict.keys():
logging.getLogger(name).setLevel(logging.CRITICAL)
#rest of the code starts here...
また、
特定の警告セットのみを抑制したい場合は、次のようにフィルタリングできます。
import logging
for name in logging.Logger.manager.loggerDict.keys():
if ('boto' in name) or ('urllib3' in name) or ('s3transfer' in name) or ('boto3' in name) or ('botocore' in name) or ('nose' in name):
logging.getLogger(name).setLevel(logging.CRITICAL)
#rest of the code starts here...