Python を使用してコマンドライン引数を解析する

Vaibhav Vaibhav 2022年4月12日
Python を使用してコマンドライン引数を解析する

コマンドラインまたはシェルから Python プログラムを実行しているときに、文字列、技術的には引数またはオプションの形式で値をプログラムに渡すことができます。プログラムはこれらの値にアクセスして実行し、計算にこれらの値を使用することもできます。

この記事では、Python を使用してこれらのコマンドライン引数を解析して使用する方法について説明します。

optparse モジュールを使用してコマンドライン引数を解析する

optparse モジュールは、コマンドラインオプションを解析するための柔軟で便利な Python パッケージです。標準の Python が組み込まれています。宣言型の方法論を使用して、コマンドラインオプションを解析します。このパッケージを使用するには、最初にクラス OptionParser のオブジェクトを作成し、次に add_option() メソッドを使用して可能なオプションまたは引数に関する詳細を追加する必要があります。add_option() メソッドは、option(オプション名)、type(オプションのデータ型)、help(オプションのヘルプテキスト)、default(オプションのヘルプテキスト)などの引数を受け入れます。コマンドで指定されていない場合のオプションのデフォルト値)。コマンドラインコマンドから辞書の形式でオプションとその値を取得するには、parse_args() メソッドを使用できます。

例を使用して、このライブラリの使用法をよりよく理解しましょう。-a-b、および -c の 3つのオプションをチェックする単純な Python プログラムを実装します。ここで、-a-b はオペランドを表し、+ は演算子であり、-c は基本的にターゲットの合計です。さらに、コードはこれらの値をチェックし、コマンドラインコマンドに値が見つからない場合は 0 値を割り当て、最後に a + bc と等しいかどうかをチェックします。さらに、結果を適切にフォーマットされた文字列で出力します。

import optparse

parser = optparse.OptionParser()
parser.add_option("-a", help="First Number", default=0)
parser.add_option("-b", help="Second Number", default=0)
parser.add_option("-c", help="Sum", default=0)
options, args = parser.parse_args()
a = int(options.a)
b = int(options.b)
c = int(options.c)
s = a + b
print(f"{a} + {b} = {s} and {s} {'==' if s == c else '!='} {c}")

上記のコードの簡単な説明は次のとおりです。まず、OptionParser() クラスオブジェクトを作成し、3つのターゲットオプションに関する情報を追加します。-a-b、および -c。次に、コマンドラインまたはシェルコマンドをトラバースして、必要なオプションを確認します。最後に、すべての値を個別の変数に格納し、合計または a + b を計算して、それをターゲットの合計または c と比較します。

このプログラムを次のコマンドでテストしてみましょう。

python main.py -a 1 -b 2 -c 3
python main.py -a 1
python main.py -b 2
python main.py -c 3
python main.py 1 2 3
python main.py -a 1 2 3
python main.py 1 -b 2 3
python main.py 1 2 -c 3
python main.py 0 0 0
python main.py

出力:

1 + 2 = 3 and 3 == 3
1 + 0 = 1 and 1 != 0
0 + 2 = 2 and 2 != 0
0 + 0 = 0 and 0 != 3
0 + 0 = 0 and 0 == 0
1 + 0 = 1 and 1 != 0
0 + 2 = 2 and 2 != 0
0 + 0 = 0 and 0 != 3
0 + 0 = 0 and 0 == 0
0 + 0 = 0 and 0 == 0

出力から、コマンドラインまたはシェルコマンドにキーワードオプションまたは引数が指定されていない場合、デフォルト値が考慮されると推測できます。より良い分析のために、最初のコマンド(python main.py -a 1 -b 2 -c 3)以外のテストコマンドを参照してください。

著者: Vaibhav Vaibhav
Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.