Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのargparseで無効な引数を処理する方法をわかりやすく解説

Pythonのargparseで無効な引数を処理する方法

Python標準ライブラリのargparseモジュールを使うと、コマンドライン引数を簡単かつ柔軟に解析できます。しかし、スクリプト側で定義されていない引数が渡された場合、argparseは自動的にエラーメッセージを表示してプログラムを終了します。本記事では、サンプルコードと実行例をもとに、無効な引数が渡されたときのargparseの挙動を解説します。

サンプルコード

以下は、独自の例外クラスInvalidArgErrorを定義し、argparseで引数を処理するサンプルスクリプトです。

#foo.py
import argparse

class InvalidArgError(Exception):
    pass

parser = argparse.ArgumentParser()
parser.add_argument("echo")

args = parser.parse_args()

try:
    print(args.echo)
    raise InvalidArgError
except InvalidArgError as e:
    print(e)

スクリプトの実行方法

ターミナルから以下のようにスクリプトを実行します。ここでは、定義済みの位置引数「echo」に加えて、余分な引数「bar」も一緒に渡しています。

$ python foo.py echo bar

実行結果

スクリプトで定義されていない引数「bar」が渡されたため、argparseは以下のような使用方法(usage)とエラーメッセージを出力し、プログラムを終了します。

usage: foo.py [-h] echo
foo.py: error: unrecognized arguments: bar

ポイント解説

add_argument("echo")では位置引数(positional argument)が1つだけ定義されているため、「echo」と「bar」の2つの値を渡すと、argparseは余分な引数を受け付けられずエラーとなります。

このように、argparseは不正な引数や未知のオプションを検出すると、自動的にusageメッセージとともにエラーを表示してくれるため、開発者が引数検証用のコードを自前で書く必要はほとんどありません。必要に応じて、ArgumentParserのコンストラクタにusagedescriptionを指定したり、parse_known_args()メソッドを使って未知の引数を許容しつつ別途処理したりすることも可能です。

  1. Matplotlibで漸近線・不連続点を含むグラフを正しく描画する方法

    はじめにMatplotlibで y = 1/x のような関数をそのままプロットすると、x = 0 付近で値が発散し、グラフ上に不自然な縦線が表示されてしまうことがあります。これは数値計算では厳密な「無限大」を扱えず、0に極めて近い大きな値として計算されるためです。本記事では、numpyとMatplotlibを組み合わせて、漸近線(不連続点)を持つ関数を見やすく描画する手順を解説します。処理の手順numpyを使ってx・yのデータポイントを作成します。plt.axis(off) で軸の表示をオフにします。plot() メソッドでx・yのデータをもとに曲線を描画します。axhline() で水平方向

  2. PythonでAPIの結果を可視化する方法|GitHub APIとPlotlyを使った実践チュートリアル

    はじめにAPIを活用する最大のメリットの一つは、常に最新のライブデータを取得できる点です。データが頻繁に更新される場合でも、API経由なら最新の状態を確実に取得できます。APIプログラムは、特定の情報をリクエストするために専用のURLを使用します。たとえば「SpotifyやYouTube Musicで2020年に最も再生された楽曲トップ100」といった具合です。リクエストされたデータは、JSONやCSVなど、プログラムで扱いやすい形式で返却されます。Pythonを使えば、ほぼあらゆるURLに対してAPI呼び出しを記述できます。本記事では、GitHubのAPIからデータを抽出し、その結果をグラフ