Python で Argparse の引数を確認する

Ammar Ali 2023年6月21日
  1. Python での argparse の引数の確認
  2. argparse オプションの引数が設定されているかどうかを確認する
Python で Argparse の引数を確認する

このチュートリアルでは、argparse の使用について説明し、条件文と Python での引数の名前を使用して argparse に引数が存在するかどうかを確認します。

Python での argparse の引数の確認

Python の argparse ライブラリは、コマンド ラインでユーザー フレンドリーなインターフェイスを記述するために使用されます。 たとえば、スクリプト名を使用してスクリプトを実行し、スクリプトの実行に必要な引数を提供できます。

スクリプト ファイルの名前の後に引数を追加できます。argparse ライブラリは、これらの引数をスクリプト内で使用して必要なタスクを実行できるオブジェクトに変換します。 ユーザーを支援するために、各引数にヘルプ、使用法、およびエラー メッセージを添付することもできます。

たとえば、ユーザーが無効な引数を入力すると、argparse ライブラリはエラーを表示し、ユーザーが引数を入力する方法を示します。 たとえば、argparse ライブラリの簡単な例について説明しましょう。

以下のコードを参照してください。

import argparse

My_parser = argparse.ArgumentParser()
My_parser.parse_args()

出力:

PS C:\Users\ammar> python test.py -h
usage: test.py [-h]

optional arguments:
  -h, --help  show this help message and exit

上記のスクリプトを実行するには、cmd (コマンド プロンプト) で python test.py -h を記述し、Windows のシステム パス または環境変数に Python が追加されていることを確認する必要があります。 追加されていない場合は、python.exe ファイルへのフル パスを使用できます。

また、コマンド プロンプトの現在のディレクトリが Python ファイルのディレクトリに設定されていることも確認する必要があります。 そうでない場合は、Python ファイルへのフル パスを指定する必要があります。

たとえば、Python をシステム path に追加する必要があり、Python ファイルの現在のディレクトリにもいないとします。 上記の出力の最初の行を下の行に変更する必要があります。

& C:/Users/ammar/python.exe "c:/Users/ammar/test.py" -h

上記の行は Windows PowerShell でテストされており、cmd の場合、行頭の & を削除する必要があります。 上記の出力では、1つの引数のみがヘルプに使用されていることがわかります。

add_argument() 関数を使用して、引数パーサーに引数を追加できます。 2 種類の引数を設定できます。1つは位置引数で、もう 1つはオプションの引数です。

引数を省略可能にするには、引数の前にシングル - またはダブル ハイフン -- を使用する必要があります。 help 引数を使用して引数のヘルプを追加し、その値を add_argument() 関数内の文字列に設定することもできます。

ArgumentParser() 関数内の説明とエピローグ引数を使用して、ヘルプ セクションの前後にテキストを追加できます。 parse_args() は、コマンド プロンプトで渡された引数をオブジェクトに変換して返します。これは、後で操作を実行するために使用できます。

たとえば、ユーザーから文字列引数を取得して表示してみましょう。 以下のコードを参照してください。

import argparse
import string

My_parser = argparse.ArgumentParser(
    description="text before help.....", epilog="text after help....."
)
My_parser.add_argument("firstArg", help="You can use string here", type=str)
My_args = My_parser.parse_args()

print(My_args.firstArg)

出力:

PS C:\Users\ammar> python test.py
usage: test.py [-h] firstArg
test.py: error: the following arguments are required: firstArg


PS C:\Users\ammar> python test.py -h
usage: test.py [-h] firstArg

text before help.....

positional arguments:
  firstArg    You can use string here

optional arguments:
  -h, --help  show this help message and exit

text after help.....


PS C:\Users\ammar> python test.py hello
hello

上記の Python ファイルを 3 回実行し、結果を出力で確認できます。 初めて、引数を指定せずにファイルを実行したところ、引数が必要であるというエラー メッセージが表示され、引数が渡されませんでした。

2 回目は、ヘルプに使用される -h 引数を指定してスクリプトを実行し、コードはスクリプトの使用法とヘルプを表示します。 コマンド プロンプトに表示される文字列を使用して、スクリプトを 3 回実行しました。

add_argument() 関数の type 引数を使用して、文字列の str や整数データ型の int のように、引数のデータ型を設定できます。 渡されたすべての引数は My_args 変数に格納され、この変数を使用して特定の引数が渡されたかどうかを確認できます。

argparse オプションの引数が設定されているかどうかを確認する

オプションの引数の場合、引数が渡されない場合、parse_args() メソッドはその特定の引数に対して None を返します。 条件ステートメントを使用して、引数が None かどうかを確認できます。引数が None の場合は、引数が渡されないことを意味します。

たとえば、オプションの引数を追加して、引数が渡されたかどうかを確認し、それに応じて結果を表示してみましょう。 以下のコードを参照してください。

import argparse
import string

My_parser = argparse.ArgumentParser(
    description="text before help.....", epilog="text after help....."
)
My_parser.add_argument("-firstArg", help="You can use string here", type=str)
My_args = My_parser.parse_args()

if My_args.firstArg is not None:
    print("Argument passed")
else:
    print("No Argument passed")

出力:

PS C:\Users\ammar> python test.py
No Argument passed

PS C:\Users\ammar> python test.py -firstArg hello
Argument passed

上記のスクリプトを引数ありと引数なしで 2 回実行し、それに応じてテキストを表示しました。 is not None および is None ステートメントを条件付きステートメントと共に使用して、引数が渡されるかどうかを判断できます。

オプションの引数の場合、引数を渡す前にそれらの名前も使用する必要があることに注意してください。 デフォルト値の場合、引数が None になることは決してないため、チェックする引数にデフォルト値が設定されていないことを確認してください。

たとえば、add_argument() 関数内で default キーワードを使用して上記のコードにデフォルト値を追加し、上記の手順を繰り返してみましょう。 以下のコードを参照してください。

import argparse
import string

My_parser = argparse.ArgumentParser(
    description="text before help.....", epilog="text after help....."
)
My_parser.add_argument(
    "-firstArg", help="You can use string here", type=str, default="default_value"
)
My_args = My_parser.parse_args()

if My_args.firstArg is not None:
    print("Argument passed")
else:
    print("No Argument passed")

出力:

PS C:\Users\ammar> python test.py
Argument passed

PS C:\Users\ammar> python test.py -firstArg hello
Argument passed

上記の出力で、引数を渡さない場合でも、デフォルト値のために渡された引数がコードに表示されることがわかります。 add_argument() 関数を何度も使用して、複数の引数を追加できます。

ユーザーによる入力の選択を制限したい場合は、choices 引数を add_argument() 内で使用し、その値を値のリストに設定します。この値は、スクリプトへの引数としてのみ渡すことができます。 .

著者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook