「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python の警告フィルター

Python の警告フィルター

2024 年 11 月 8 日に公開
ブラウズ:810

Warning Filter in Python

Buy Me a Coffee☕

*My post explains Warning with warn() in Python.

A warnings filter can set which warnings to show using these filters(actions) below. *"once" may not work properly:

Value Disposition
"default" print the first occurrence of matching warnings for each location (module line number) where the warning is issued
"error" turn matching warnings into exceptions
"ignore" never print matching warnings
"always" always print matching warnings
"module" print the first occurrence of matching warnings for each module where the warning is issued (regardless of line number)
"once" print only the first occurrence of matching warnings, regardless of location

By default, these filters below are set to warnings.filters and they can be reset with resetwarnings() as shown below:

import warnings

print(warnings.filters)
# [('default', None, , '__main__', 0),
#  ('ignore', None, , None, 0),
#  ('ignore', None, , None, 0),
#  ('ignore', None, , None, 0),
#  ('ignore', None, , None, 0)]

warnings.resetwarnings()

print(warnings.filters)
# []

Now, filterwarnings() or simplefilter() can filter warnings as shown below:

*Memos for filterwarnings():

  • The 1st argument is action(Required-Type:str). *"default", "error", "ignore", "always", "module" or "once" can be set.
  • The 2nd argument is message(Optional-Default:""-Type:str).
  • The 3rd argument is category(Optional-Default:Warning-Type:Warning).
  • The 4th argument is module(Optional-Default:""-Type:str). *It may not work properly.
  • The 5th argument is lineno(Optional-Default:0-Type:int): *Memos:
    • It decides a line number.
    • It must be x >= 0.
  • The 6th argument is append(Optional-Default:False-Type:bool). *If it's False, a filter is add before other filters while if it's True, a filter is add after other filters.

*Memos for simplefilter():

  • The 1st argument is action(Required-Type:str). *"default", "error", "ignore", "always", "module" or "once" can be set.
  • The 2nd argument is category(Optional-Default:Warning-Type:Warning).
  • The 3rd argument is lineno(Optional-Default:0-Type:int): *Memos:
    • It decides a line number.
    • It must be x >= 0.
  • The 4th argument is append(Optional-Default:False-Type:bool). *If it's False, a filter is add before other filters while if it's True, a filter is add after other filters.
my_project
 |-main.py
 |-file1.py(module)
 └-file2.py(module)

file1.py:

import warnings                                                 # Line 1
                                                                # Line 2
warnings.warn(message="Warning 1", category=UserWarning)        # Line 3
warnings.warn(message="Warning 2", category=DeprecationWarning) # Line 4
warnings.warn(message="Warning 2", category=DeprecationWarning) # Line 5
warnings.warn(message="Warning 3", category=UserWarning)        # Line 6

file2.py:

import warnings                                                 # Line 1
                                                                # Line 2
warnings.warn(message="Warning 1", category=UserWarning)        # Line 3
warnings.warn(message="Warning 2", category=DeprecationWarning) # Line 4
warnings.warn(message="Warning 2", category=DeprecationWarning) # Line 5
warnings.warn(message="Warning 3", category=UserWarning)        # Line 6

main.py with "default" filter(action):

import warnings

warnings.resetwarnings()

warnings.filterwarnings(action="default")
warnings.filterwarnings(action="default", message="", category=Warning,
                        module="", lineno=0, append=False)
warnings.simplefilter(action="default")
warnings.simplefilter(action="default", category=Warning,
                      lineno=0, append=False)
print(warnings.filters)
# [('default', None, , None, 0)]

import file1, file2
# ...\my_project\file1.py:3: UserWarning: Warning 1
#   warnings.warn(message="Warning 1", category=UserWarning)
# ...\my_project\file1.py:4: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file1.py:5: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file1.py:6: UserWarning: Warning 3
#   warnings.warn(message="Warning 3", category=UserWarning)
# ...\my_project\file2.py:3: UserWarning: Warning 1
#   warnings.warn(message="Warning 1", category=UserWarning)
# ...\my_project\file2.py:4: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file2.py:5: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file2.py:6: UserWarning: Warning 3
#   warnings.warn(message="Warning 3", category=UserWarning)

main.py with "error" filter(action):

import warnings

warnings.resetwarnings()

warnings.filterwarnings(action="error")
warnings.simplefilter(action="error")

print(warnings.filters)
# [('error', None, , None, 0)]

import file1, file2
# ...\my_project\file1.py", line 3, in 
#     warnings.warn(message="Warning 1", category=UserWarning)
# UserWarning: Warning 1

main.py with "ignore" filter(action):

import warnings

warnings.resetwarnings()

warnings.filterwarnings(action="ignore")
warnings.simplefilter(action="ignore")

print(warnings.filters)
# [('ignore', None, , None, 0)]

import file1, file2 # Warnings are not shown
import warnings

warnings.resetwarnings()

warnings.filterwarnings(action="ignore", category=UserWarning)
warnings.simplefilter(action="ignore", category=UserWarning)

print(warnings.filters)
# [('ignore', None, , None, 0)]

import file1, file2
# ...\my_project\file1.py:4: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file1.py:5: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file2.py:4: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file2.py:5: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
import warnings

warnings.resetwarnings()

warnings.filterwarnings(action="ignore", message="Warning 1", 
                        category=UserWarning)
print(warnings.filters)
# [('ignore', re.compile('Warning 1', re.IGNORECASE),
#  , None, 0)]

import file1, file2
# ...\my_project\file1.py:4: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file1.py:5: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file1.py:6: UserWarning: Warning 3
#   warnings.warn(message="Warning 3", category=UserWarning)
# ...\my_project\file2.py:4: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file2.py:5: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file2.py:6: UserWarning: Warning 3
#   warnings.warn(message="Warning 3", category=UserWarning)
import warnings

warnings.resetwarnings()

warnings.filterwarnings(action="ignore", lineno=6)
warnings.simplefilter(action="ignore", lineno=6)

print(warnings.filters)
# [('ignore', None, , None, 6)]

import file1, file2
# ...\my_project\file1.py:3: UserWarning: Warning 1
#   warnings.warn(message="Warning 1", category=UserWarning)
# ...\my_project\file1.py:4: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file1.py:5: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file2.py:3: UserWarning: Warning 1
#   warnings.warn(message="Warning 1", category=UserWarning)
# ...\my_project\file2.py:4: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file2.py:5: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)

main.py with "always" filter(action):

import warnings

warnings.resetwarnings()

warnings.filterwarnings(action="always")
warnings.simplefilter(action="always")

print(warnings.filters)
# [('always', None, , None, 0)]

import file1, file2
# ...\my_project\file1.py:3: UserWarning: Warning 1
#   warnings.warn(message="Warning 1", category=UserWarning)
# ...\my_project\file1.py:4: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file1.py:5: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file1.py:6: UserWarning: Warning 3
#   warnings.warn(message="Warning 3", category=UserWarning)
# ...\my_project\file2.py:3: UserWarning: Warning 1
#   warnings.warn(message="Warning 1", category=UserWarning)
# ...\my_project\file2.py:4: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file2.py:5: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file2.py:6: UserWarning: Warning 3
#   warnings.warn(message="Warning 3", category=UserWarning)

main.py with "module" filter(action):

import warnings

warnings.resetwarnings()

warnings.filterwarnings(action="module")
warnings.simplefilter(action="module")

print(warnings.filters)
# [('module', None, , None, 0)]

import file1, file2
# ...\my_project\file1.py:3: UserWarning: Warning 1
#   warnings.warn(message="Warning 1", category=UserWarning)
# ...\my_project\file1.py:4: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file1.py:6: UserWarning: Warning 3
#   warnings.warn(message="Warning 3", category=UserWarning)
# ...\my_project\file2.py:3: UserWarning: Warning 1
#   warnings.warn(message="Warning 1", category=UserWarning)
# ...\my_project\file2.py:4: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file2.py:6: UserWarning: Warning 3
#   warnings.warn(message="Warning 3", category=UserWarning)

main.py with "once" filter(action):

import warnings

warnings.resetwarnings()

warnings.filterwarnings(action="once")
warnings.simplefilter(action="once")

print(warnings.filters)
# [('once', None, , None, 0)]

import file1, file2
# ...\my_project\file1.py:3: UserWarning: Warning 1
#   warnings.warn(message="Warning 1", category=UserWarning)
# ...\my_project\file1.py:4: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file1.py:6: UserWarning: Warning 3
#   warnings.warn(message="Warning 3", category=UserWarning)
# ...\my_project\file2.py:3: UserWarning: Warning 1
#   warnings.warn(message="Warning 1", category=UserWarning)
# ...\my_project\file2.py:4: DeprecationWarning: Warning 2
#   warnings.warn(message="Warning 2", category=DeprecationWarning)
# ...\my_project\file2.py:6: UserWarning: Warning 3
#   warnings.warn(message="Warning 3", category=UserWarning)

main.py with append argument. *If append=False, a filter is add before other filters while if append=True, a filter is add after other filters:

import warnings

warnings.resetwarnings()

print(warnings.filters)
# []

warnings.filterwarnings(action="default", append=False)
warnings.simplefilter(action="default", append=False)

print(warnings.filters)
# [('default', None, , None, 0)]

warnings.filterwarnings(action="always", append=False)
warnings.simplefilter(action="always", append=False)

print(warnings.filters)
# [('always', None, , None, 0),
#  ('default', None, , None, 0)]

warnings.filterwarnings(action="once", append=True)
warnings.simplefilter(action="once", append=True)

print(warnings.filters)
# [('always', None, , None, 0),
#  ('default', None, , None, 0),
#  ('once', None, , None, 0)]
リリースステートメント この記事は次の場所に転載されています: https://dev.to/hyperkai/warning-filter-in-python-4g0e?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>
  • コードの日 / 日数: 高度なループ
    コードの日 / 日数: 高度なループ
    2024 年 8 月 30 日金曜日 私は現在、Codecademy フルスタック エンジニア パスの 2 番目のコースにいます。私は最近、JavaScript 構文 I のレッスンを完了し、JavaScript 構文 II の配列とループの課題を完了しました。次は、オブジェクト、イテレータ、エラー...
    プログラミング 2024 年 11 月 8 日に公開
  • Angular Addicts # Angular 暗黙的ライブラリ、将来はスタンドアロンなど
    Angular Addicts # Angular 暗黙的ライブラリ、将来はスタンドアロンなど
    ?Angular Addict の皆さん これは、私の注意を引いた厳選された Angular リソースを毎月まとめた Angular Addicts ニュースレターの第 29 号です。 (第28回、第27回、第26回はこちら) ?リリースのお知らせ ...
    プログラミング 2024 年 11 月 8 日に公開
  • 機械学習における C++ : Python の GIL のエスケープ
    機械学習における C++ : Python の GIL のエスケープ
    導入 Python の Global Interpreter Lock (GIL) が、高い同時実行性や生のパフォーマンスを必要とする機械学習アプリケーションのボトルネックになる場合、C は魅力的な代替手段を提供します。このブログ投稿では、パフォーマンス、同時実行性、Python ...
    プログラミング 2024 年 11 月 8 日に公開
  • Java HashMap で複数の値を 1 つのキーにマップするにはどうすればよいですか?
    Java HashMap で複数の値を 1 つのキーにマップするにはどうすればよいですか?
    HashMap の単一キーへの複数の値のマッピングJava の HashMap では、各キーが 1 つの値に関連付けられます。ただし、複数の値を 1 つのキーにマップする必要があるシナリオもあります。これを実現する方法は次のとおりです:MultiValueMap アプローチ:最もシンプルで簡単なアプ...
    プログラミング 2024 年 11 月 8 日に公開
  • PHP でファイル内の文字列を効率的にチェックするにはどうすればよいですか?
    PHP でファイル内の文字列を効率的にチェックするにはどうすればよいですか?
    PHP でファイルに文字列が含まれているかどうかを確認する方法ファイル内に特定の文字列が存在するかどうかを確認するには、 元のコード:提供されたコードは、変数 $id で示されるファイル内の文字列の存在をチェックしようとします。 、ファイルを 1 行ずつ読み取ります。ただし、while ループ内の条...
    プログラミング 2024 年 11 月 8 日に公開
  • Small Swoole エンティティ マネージャー
    Small Swoole エンティティ マネージャー
    Small Swoole エンティティ マネージャーを紹介できることを嬉しく思います。 これは、Swoole (および OpenSwoole) を中心に設計された ORM です。 次の非同期接続をサポートします: MySQL Postgres Small Swoole Db (Swoole テーブ...
    プログラミング 2024 年 11 月 8 日に公開
  • WebCodec - 送受信
    WebCodec - 送受信
    導入 こんにちは! ? このチュートリアルでは、WebCodec API を使用してビデオの送信と受信の両方を行う方法を説明します。 まずサーバーのコーディングを始めましょう。 サーバーのセットアップ ピア間でパケットを送受信するには、WebSocket サーバー...
    プログラミング 2024 年 11 月 8 日に公開
  • PHP ftp_put() が失敗する理由: 問題の分析と解決
    PHP ftp_put() が失敗する理由: 問題の分析と解決
    PHP ftp_put が失敗する: 問題の分析と解決ftp_put() が正しく機能しないことは、転送時にイライラする問題になる可能性がありますFTP 経由でファイルを転送します。 PHP では、この問題の一般的な原因は、アクティブ モードのデフォルトの使用にあります。アクティブ モードとパッシブ...
    プログラミング 2024 年 11 月 8 日に公開
  • Java で小数点区切り文字を保持したまま文字列から数字以外の文字を削除するにはどうすればよいですか?
    Java で小数点区切り文字を保持したまま文字列から数字以外の文字を削除するにはどうすればよいですか?
    Java 文字列内の数字以外の文字を削除しながら小数点区切り文字を保持するJava 文字列を使用する場合、必要な状況が発生します。小数点区切り文字を保持したまま、数字以外の文字をすべて削除します。これは、正規表現と replaceAll() メソッドを使用して効果的に実現できます。この問題に対処する...
    プログラミング 2024 年 11 月 8 日に公開
  • データの可視性とクエリ効率を向上させるために、MySQL で列を再配置するにはどうすればよいですか?
    データの可視性とクエリ効率を向上させるために、MySQL で列を再配置するにはどうすればよいですか?
    可視性を高めるための MySQL 列の効率的な再配置列の順序が最適でない場合、大規模なデータベースのクエリは面倒になることがあります。この記事では、既存の列を簡単に再配置し、データの整合性に影響を与えることなくテーブルの可視性を最適化するための包括的なソリューションを提供します。列の位置を変更するに...
    プログラミング 2024 年 11 月 8 日に公開
  • getElementsByClassName を正しく使用し、イベントに基づいて要素スタイルを変更する方法
    getElementsByClassName を正しく使用し、イベントに基づいて要素スタイルを変更する方法
    getElementsByClassName を使用した要素スタイルの変更getElementsByClassName を使用すると、同じクラス名を持つ複数の要素を選択できます。この例では、コードの目的は、特定のクラス名を持つすべての div の外側でイベントが発生したときに、その div の背景色...
    プログラミング 2024 年 11 月 8 日に公開
  • キャンバス画像が描画されないのはなぜですか?非同期画像読み込みの重要性。
    キャンバス画像が描画されないのはなぜですか?非同期画像読み込みの重要性。
    描画前に画像のロードを待機しています画像をキャンバスに追加しようとするときは、画像を描画する前に画像がロードされていることを確認することが重要です。それを描こうとしている。コードで発生した問題は、イメージ読み込みの非同期的な性質が原因です。この問題を解決するには、イメージの onload イベントに...
    プログラミング 2024 年 11 月 8 日に公開
  • Golang の LeetCode: ブール式の解析
    Golang の LeetCode: ブール式の解析
    これは、私が解決して楽しかった LeetCode の問題の 1 つです。私はそれを Golang で解決しました。私はすでに Go の初心者で、わずか 1 週間で Golang で学習を始めました。 直感 この問題は、文字列を取得して評価する計算機プログラムの実装の別のバージョンで...
    プログラミング 2024 年 11 月 8 日に公開
  • XSS 攻撃を防ぐ方法: 包括的なガイド
    XSS 攻撃を防ぐ方法: 包括的なガイド
    1. XSSとは何ですか? XSS (クロスサイト スクリプティング) は、Web アプリケーションに見られるセキュリティ脆弱性の一種です。これにより、攻撃者は悪意のあるスクリプト (通常は JavaScript) を他のユーザーが閲覧する Web ページに挿入することができます。...
    プログラミング 2024 年 11 月 8 日に公開
  • Laravel の新しい Cache::flexible()
    Laravel の新しい Cache::flexible()
    ルートに到達するたびに大規模なデータセットの計算を待つのは大変です。そして、ユーザーは待ちたくありません。最近では誰もが保持期間を短くしています。そのため、私たちは何年も前にキャッシュを使用してこの問題を修正しました。 Laravel にはデータのキャッシュに役立つ Cache Fascad があり...
    プログラミング 2024 年 11 月 8 日に公開

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3