PythonにおけるArgsの解析:知っておくべきこと

By JoeVu, at: 2023年6月15日7:06

Estimated Reading Time: __READING_TIME__ minutes

Parse Args in Python: What you must know
Parse Args in Python: What you must know

はじめに

 

多くのPythonアプリケーション、特にコマンドラインから実行されるアプリケーションでは、コマンドライン引数を効果的に処理することが不可欠です。引数を解析することで、スクリプトはユーザーからの入力を受け入れることができ、より柔軟で強力なものになります。Pythonのargparseモジュールは、コマンドライン引数を処理するための堅牢な方法を提供し、ユーザーフレンドリーなコマンドラインインターフェースを簡単に構築できます。このガイドでは、Pythonでargparseを使用してコマンドライン引数を解析する方法について説明します。

こんなの見たことありますか?

 

import sys

def main():
    if len(sys.argv) < 3:
        print("Not enough arguments!")
        return
    
    arg1 = sys.argv[1]
    arg2 = sys.argv[2]
    
    if arg1 == 'option1':
        print(f"Option 1 selected with value {arg2}")
    elif arg1 == 'option2':
        print(f"Option 2 selected with value {arg2}")
    else:
        print("Unknown option!")

if __name__ == "__main__":
    main()

 

このスクリプトの問題点は何ですか?

 

  1. ヘルプメッセージがない:スクリプトは、使用方法をユーザーに案内するヘルプメッセージまたは使用方法メッセージを提供していません。
     
  2. エラー処理が最小限:スクリプトは、引数が2つ未満かどうかのみをチェックし、あいまいなエラーメッセージを出力します。
     
  3. 引数の検証が不十分:スクリプトは、最初の引数が'option1'または'option2'と一致するかどうかをチェックする以外、引数を検証しません。
     
  4. ハードコードされたロジック:ロジックはハードコードされており柔軟性に欠けるため、拡張または変更が困難です。

 

argparseとは?

 

argparseは、Python標準ライブラリにあるモジュールで、コマンドラインインターフェースの作成に役立ちます。プログラムに必要な引数を定義し、それらの引数を解析し、ヘルプメッセージと使用方法メッセージを自動的に生成できます。これにより、コマンドライン入力の処理が容易になり、より良いユーザーエクスペリエンスを提供できます。

 

argparseの基本的な使用方法

 

ステップ1:argparseのインポート

 

最初に、argparseモジュールをインポートする必要があります。

 

import argparse

 

ステップ2:パーサーの作成

 

次に、ArgumentParserオブジェクトを作成します。このオブジェクトは、コマンドライン引数を解析するために必要なすべての情報を保持します。

 

parser = argparse.ArgumentParser(description='Example script to demonstrate argparse.')

 

ステップ3:引数の定義

 

add_argumentメソッドを使用して、プログラムに必要な引数を定義できます。各引数には、名前と、オプションで型、デフォルト値、ヘルプメッセージ、その他の属性が必要です。

parser.add_argument('input', type=str, help='Input file path')
parser.add_argument('output', type=str, help='Output file path')
parser.add_argument('--verbose', action='store_true', help='Increase output verbosity'

 

ステップ4:引数の解析

 

引数を定義したら、parse_argsメソッドを使用してコマンドラインから引数を解析します。

 

args = parser.parse_args()

 

ステップ5:引数の使用

 

解析後、argsオブジェクトの属性として引数にアクセスできます。

 

input_path = args.input
output_path = args.output
verbose = args.verbose

if verbose:
    print(f'Input file: {input_path}')
    print(f'Output file: {output_path}')

 

サンプルスクリプト

 

argparseの基本的な使用方法を示す完全なサンプルスクリプトを次に示します。

 

import argparse

def main():
    parser = argparse.ArgumentParser(description='Example script to demonstrate argparse.')
    parser.add_argument('input', type=str, help='Input file path')
    parser.add_argument('output', type=str, help='Output file path')
    parser.add_argument('--verbose', action='store_true', help='Increase output verbosity')

    args = parser.parse_args()

    input_path = args.input
    output_path = args.output
    verbose = args.verbose

    if verbose:
        print(f'Input file: {input_path}')
        print(f'Output file: {output_path}')
    
    # Add your main script logic here

if __name__ == '__main__':
    main()


このスクリプトを実行すると、スクリプトの使用方法が適切に表示されます。

 

❯ python test_script.py
usage: test_script.py [-h] [--verbose] input output
test_script.py: error: the following arguments are required: input, output

 

高度な機能

 

位置引数とオプション引数

 

  • 位置引数:必須であり、正しい順序で指定する必要があります。
     
  • オプション引数:オプションであり、任意の順序で指定できます。通常は-または--で始まります。

 

引数の型とデフォルト値

 

引数の型(例:intfloatstr)を指定し、デフォルト値を設定できます。

 

parser.add_argument('--count', type=int, default=1, help='Number of times to repeat the message')

 

選択肢

 

引数を事前に定義された選択肢のセットに制限できます。

 

parser.add_argument('--method', choices=['add', 'subtract', 'multiply', 'divide'], help='Mathematical operation to perform')

 

必須引数

 

オプション引数を必須にすることができます。

 

parser.add_argument('--log', required=True, help='Log file path')

 

ヘルプメッセージと使用方法メッセージの生成


argparseモジュールは、スクリプトのヘルプメッセージと使用方法メッセージを自動的に生成します。-hまたは--helpフラグを付けてスクリプトを実行すると、これらのメッセージが表示されます。

 

$ python script.py -h

 

出力:

 

usage: script.py [-h] [--verbose] input output

Example script to demonstrate argparse.

positional arguments:
  input       Input file path
  output      Output file path

optional arguments:
  -h, --help  show this help message and exit
  --verbose   Increase output verbosity

 

結論

 

Pythonでコマンドライン引数を解析するためにargparseを使用することは、柔軟でユーザーフレンドリーなコマンドラインインターフェースを作成する効率的な方法です。明確で包括的な引数構造を定義することで、スクリプトの使いやすさと機能性を向上させることができます。今日からPythonプロジェクトにargparseを取り入れて、合理化された引数解析の利点を体験してください。

他に使用できる代替手段:

Tag list:
- parse args python
- pass arguments
- args parsers python
- Python argument parsers
- arguments script
- args parsers
- script arguments parsers

Subscribe

Subscribe to our newsletter and never miss out lastest news.