まず第一に、省略できる引数がある場合、それらの引数はオプションであり、実際の引数ではありません。
Python は、引数を解析する方法を複数提供しています。最良の選択はargparse
、多くの機能と開発が継続されているモジュールを備えた です。「古い」バージョンの python をサポートする必要がある場合はoptparse
、python3.2 で廃止されましたが、に興味があるかもしれません。getopt
C の getopt を模倣するモジュールも存在します (これは使用しないでください! 歴史的な理由と、これらの古いスタイルの構文解析を使用する人々を支援するためのものです)。
を使用した簡単な例は次のargparse
とおりです。
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--option-name', action='store', dest='option_name_var')
parser.add_argument('numbers', type=int, nargs='*')
parsed = parser.parse_args() #parses sys.argv by default
print(parsed.numbers)
print(parsed.option_name_var)
次のように使用できます。
$python example.py 1 2 3
[1, 2, 3]
None
$python example.py 1 2 3 --option-name "value"
[1, 2, 3]
value
$python example.py 1 2 3 --option-name
usage: example.py [-h] [--option-name OPTION_NAME_VAR] [numbers [numbers ...]]
example.py: error: argument --option-name: expected one argument
$python example.py --option-name
usage: example.py [-h] [--option-name OPTION_NAME_VAR] [numbers [numbers ...]]
example.py: error: argument --option-name: expected one argument
$python example.py --option-name 5
[]
5
$python example.py 1 2 "string"
usage: example.py [-h] [--option-name OPTION_NAME_VAR] [numbers [numbers ...]]
example.py: error: argument numbers: invalid int value: 'string'
数値が整数のリストに自動的に変換される方法に注意してください。値が整数でない場合や引数が欠落している場合などはエラーが発生します。
デフォルトのヘルプ テキストもあります。
$python example.py -h
usage: example.py [-h] [--option-name OPTION_NAME_VAR] [numbers [numbers ...]]
positional arguments:
numbers
optional arguments:
-h, --help show this help message and exit
--option-name OPTION_NAME_VAR