Pythonのargparseモジュールは、コマンドライン引数のパーシング(解析)をサポートする標準ライブラリです。argparseを使用すると、簡単にコマンドライン引数を処理して、引数の値に基づいてプログラムの動作を変更できます。この記事では、初心者向けにこの関数の使い方について説明していきます。
下記の様な内容で悩んでいる/困っている場合に使える方法を参考までにご共有させて頂きます。
・Pythonには、どの様にコマンドライン引数を使うの?
・Pythonのargparseモジュールは、どの様に使うのだろうか?
目次
- argparseモジュールの基本的な使い方
- 例1:簡単なサンプル(type引数, help引数)
- 例2:簡単なサンプル(type引数, help引数)
- 例3:オプション引数の使用、デフォルト値を設定する(オプション引数「”-”」, default引数)
- 例4:オプション引数の使用、デフォルト値を設定する(オプション引数「”–”」, default引数)
- 例5:オプション引数の使用、デフォルト値を設定する(オプション引数「”-”, ”–”」, default引数)
- 例6:lambda関数を事前処理をする(lambda関数との組み合わせ)
- 例7:デフォルト値をTrueにする(action引数:”store_true”)
- 例8:複数の引数の有効化(nargs引数:”*”)
- 例9:引数への入力値を必須化(required引数)
- 例10:引数に対して定数を設定する(action引数:”store_const”, const引数)
- 例11:引数への入力値を選択肢内の値に制限する(choices引数)
- 例12:引数への入力値をリストとして扱う(action引数:”append”)
- 例13:引数に対してリストとして扱っている定数を設定する(action引数:”append_const”, const引数)
- まとめ
- 関連検索ワード
- 関連キーワード
argparseモジュールの基本的な使い方
import argparse
parser = argparse.ArgumentParser(description='説明')
parser.add_argument('var')
args = parser.parse_args()
print(f"result: {args.var}")
import subprocess
result = subprocess.run("python sample_argparse.py -h")
usage: sample_argparse.py [-h] var
説明
positional arguments:
var
optional arguments:
-h, –help show this help message and exit
import subprocess
result = subprocess.run("python sample_argparse.py one_two_three")
result: one_two_three
例1:簡単なサンプル(type引数, help引数)
import argparse
parser = argparse.ArgumentParser(description='sample')
parser.add_argument('number', type=int, help='number')
parser.add_argument('word', type=str, help='word')
args = parser.parse_args()
print(f"number: {args.number}")
print(f"word: {args.word}")
import subprocess
result = subprocess.run("python sample_argparse.py -h")
usage: sample_argparse.py [-h] number word
sample
positional arguments:
number number
word word
optional arguments:
-h, –help show this help message and exit
import subprocess
result = subprocess.run("python sample_argparse.py 123 one_two_three")
number: 123
word: one_two_three
例2:簡単なサンプル(type引数, help引数)
import argparse
parser = argparse.ArgumentParser(description='addition')
parser.add_argument('x', type=int, help='number x')
parser.add_argument('y', type=int, help='number y')
args = parser.parse_args()
print(f"result: {args.x + args.y}")
import subprocess
result = subprocess.run("python sample_argparse.py -h")
usage: sample_argparse.py [-h] x y
addition
positional arguments:
x number x
y number y
optional arguments:
-h, –help show this help message and exit
import subprocess
result = subprocess.run("python sample_argparse.py 10 20")
result: 30
例3:オプション引数の使用、デフォルト値を設定する(オプション引数「”-”」, default引数)
import argparse
parser = argparse.ArgumentParser(description='addition')
parser.add_argument('-x', type=int, help='number x', default=0)
parser.add_argument('-y', type=int, help='number y', default=0)
args = parser.parse_args()
print(f"result: {args.x + args.y}")
import subprocess
result = subprocess.run("python sample_argparse.py -h")
usage: sample_argparse.py [-h] [-x X] [-y Y]
addition
optional arguments:
-h, –help show this help message and exit
-x X number x
-y Y number y
import subprocess
result = subprocess.run("python sample_argparse.py")
result = subprocess.run("python sample_argparse.py -x 10 -y 20")
result = subprocess.run("python sample_argparse.py -x 10")
result = subprocess.run("python sample_argparse.py -y 20")
result: 0
result: 30
result: 10
result: 20
例4:オプション引数の使用、デフォルト値を設定する(オプション引数「”–”」, default引数)
import argparse
parser = argparse.ArgumentParser(description='addition')
parser.add_argument('--x', type=int, help='number x', default=0)
parser.add_argument('--y', type=int, help='number y', default=0)
args = parser.parse_args()
print(f"result: {args.x + args.y}")
import subprocess
result = subprocess.run("python sample_argparse.py -h")
usage: sample_argparse.py [-h] [–x X] [–y Y]
addition
optional arguments:
-h, –help show this help message and exit
–x X number x
–y Y number y
import subprocess
result = subprocess.run("python sample_argparse.py")
result = subprocess.run("python sample_argparse.py --x 10 --y 20")
result = subprocess.run("python sample_argparse.py --x 10")
result = subprocess.run("python sample_argparse.py --y 20")
result: 0
result: 30
result: 10
result: 20
例5:オプション引数の使用、デフォルト値を設定する(オプション引数「”-”, ”–”」, default引数)
import argparse
parser = argparse.ArgumentParser(description='addition')
parser.add_argument('-x', '--num1', type=int, help='number x', default=0)
parser.add_argument('-y', '--num2', type=int, help='number y', default=0)
args = parser.parse_args()
print(f"result: {args.num1 + args.num2}")
import subprocess
result = subprocess.run("python sample_argparse.py -h")
usage: sample_argparse.py [-h] [-x NUM1] [-y NUM2]
addition
optional arguments:
-h, –help show this help message and exit
-x NUM1, –num1 NUM1 number x
-y NUM2, –num2 NUM2 number y
import subprocess
result = subprocess.run("python sample_argparse.py")
result = subprocess.run("python sample_argparse.py -x 10 -y 20")
result = subprocess.run("python sample_argparse.py --num1 10 --num2 20")
result = subprocess.run("python sample_argparse.py -x 10")
result = subprocess.run("python sample_argparse.py --num2 20")
result = subprocess.run("python sample_argparse.py -x 10 --num2 20")
result: 0
result: 30
result: 30
result: 10
result: 20
result: 30
例6:lambda関数を事前処理をする(lambda関数との組み合わせ)
import argparse
square = lambda x: int(x)**2
parser = argparse.ArgumentParser(description='square of x')
parser.add_argument('-x', '--num', type=square, help='number x', default=0)
args = parser.parse_args()
print(f"result: {args.num}")
import subprocess
result = subprocess.run("python sample_argparse.py -h")
usage: sample_argparse.py [-h] [-x NUM]
square of x
optional arguments:
-h, –help show this help message and exit
-x NUM, –num NUM number x
import subprocess
result = subprocess.run("python sample_argparse.py")
result = subprocess.run("python sample_argparse.py -x 2")
result: 0
result: 4
例7:デフォルト値をTrueにする(action引数:”store_true”)
import argparse
import sys
parser = argparse.ArgumentParser(description='version check')
parser.add_argument('-V', '--version', action='store_true')
args = parser.parse_args()
if args.version:
print(f"version: {sys.version}")
import subprocess
result = subprocess.run("python sample_argparse.py -h")
usage: sample_argparse.py [-h] [-V]
version check
optional arguments:
-h, –help show this help message and exit
-V, –version
import subprocess
result = subprocess.run("python sample_argparse.py -V")
version: 3.6.13
例8:複数の引数の有効化(nargs引数:”*”)
import argparse
parser = argparse.ArgumentParser(description='sum')
parser.add_argument('-nums', '--numbers', type=int, nargs="*", default=[1])
args = parser.parse_args()
print(f"result: {args.numbers}")
import subprocess
result = subprocess.run("python sample_argparse.py -h")
usage: sample_argparse.py [-h] [-nums [NUMBERS [NUMBERS …]]]
sum
optional arguments:
-h, –help show this help message and exit
-nums [NUMBERS [NUMBERS …]], –numbers [NUMBERS [NUMBERS …]]
import subprocess
result = subprocess.run("python sample_argparse.py")
result = subprocess.run("python sample_argparse.py -nums 1 2 3")
result = subprocess.run("python sample_argparse.py --numbers 4 5 6")
result: [1]
result: [1, 2, 3]
result: [4, 5, 6]
例9:引数への入力値を必須化(required引数)
import argparse
parser = argparse.ArgumentParser(description='addition')
parser.add_argument('-x', type=int, help='number x', required=True)
parser.add_argument('-y', type=int, help='number y', required=True)
args = parser.parse_args()
print(f"result: {args.x + args.y}")
import subprocess
result = subprocess.run("python sample_argparse.py -h")
usage: sample_argparse.py [-h] -x X -y Y
addition
optional arguments:
-h, –help show this help message and exit
-x X number x
-y Y number y
import subprocess
result = subprocess.run("python sample_argparse.py")
usage: sample_argparse.py [-h] -x X -y Y
sample_argparse.py: error: the following arguments are required: -x, -y
import subprocess
result = subprocess.run("python sample_argparse.py -x 10 -y 20")
result: 30
例10:引数に対して定数を設定する(action引数:”store_const”, const引数)
import argparse
parser = argparse.ArgumentParser(description='addition')
parser.add_argument('-x', type=int, help='number x', required=True)
parser.add_argument('-y', type=int, help='number y', required=True)
parser.add_argument('-z', help='number z', action='store_const', const=30)
args = parser.parse_args()
if args.z:
print(f"result: {args.x + args.y + args.z}")
else:
print(f"result: {args.x + args.y}")
import subprocess
result = subprocess.run("python sample_argparse.py -h")
usage: sample_argparse.py [-h] -x X -y Y [-z]
addition
optional arguments:
-h, –help show this help message and exit
-x X number x
-y Y number y
-z number z
import subprocess
result = subprocess.run("python sample_argparse.py")
usage: sample_argparse.py [-h] -x X -y Y [-z]
sample_argparse.py: error: the following arguments are required: -x, -y
import subprocess
result = subprocess.run("python sample_argparse.py -x 10 -y 20")
result = subprocess.run("python sample_argparse.py -x 10 -y 20 -z")
result: 30
result: 60
例11:引数への入力値を選択肢内の値に制限する(choices引数)
import argparse
parser = argparse.ArgumentParser(description='addition')
parser.add_argument('-x', type=int, help='number x', default=10, choices=[10, 20, 30])
parser.add_argument('-y', type=int, help='number y', default=10, choices=[10, 20, 30])
args = parser.parse_args()
print(f"result: {args.x + args.y}")
import subprocess
result = subprocess.run("python sample_argparse.py -h")
usage: sample_argparse.py [-h] [-x {10,20,30}] [-y {10,20,30}]
addition
optional arguments:
-h, –help show this help message and exit
-x {10,20,30} number x
-y {10,20,30} number y
import subprocess
result = subprocess.run("python sample_argparse.py")
result = subprocess.run("python sample_argparse.py -x 10 -y 20")
result = subprocess.run("python sample_argparse.py -x 100 -y 200")
result: 20
result: 30
usage: sample_argparse.py [-h] [-x {10,20,30}] [-y {10,20,30}]
sample_argparse.py: error: argument -x: invalid choice: 100 (choose from 10, 20, 30)
例12:引数への入力値をリストとして扱う(action引数:”append”)
import argparse
parser = argparse.ArgumentParser(description='list of number')
parser.add_argument('-nums', '--numbers', type=int, nargs="*", default=[1])
parser.add_argument('-append', type=int, action='append', default=[])
args = parser.parse_args()
print(f"result: {args.numbers+args.append}")
import subprocess
result = subprocess.run("python sample_argparse.py -h")
usage: sample_argparse.py [-h] [-nums [NUMBERS [NUMBERS …]]]
[-append APPEND]
list of number
optional arguments:
-h, –help show this help message and exit
-nums [NUMBERS [NUMBERS …]], –numbers [NUMBERS [NUMBERS …]]
-append APPEND
import subprocess
result = subprocess.run("python sample_argparse.py")
result = subprocess.run("python sample_argparse.py -nums 1 2 3 -append 100")
result = subprocess.run("python sample_argparse.py --numbers 4 5 6 -append 100")
result: [1]
result: [1, 2, 3, 100]
result: [4, 5, 6, 100]
例13:引数に対してリストとして扱っている定数を設定する(action引数:”append_const”, const引数)
import argparse
parser = argparse.ArgumentParser(description='list of number')
parser.add_argument('-nums', '--numbers', type=int, nargs="*", default=[1])
parser.add_argument('-append', action='append_const', const=100, default=[])
args = parser.parse_args()
print(f"result: {args.numbers+args.append}")
import subprocess
result = subprocess.run("python sample_argparse.py -h")
usage: sample_argparse.py [-h] [-nums [NUMBERS [NUMBERS …]]] [-append]
list of number
optional arguments:
-h, –help show this help message and exit
-nums [NUMBERS [NUMBERS …]], –numbers [NUMBERS [NUMBERS …]]
-append
import subprocess
result = subprocess.run("python sample_argparse.py")
result = subprocess.run("python sample_argparse.py -nums 1 2 3 -append")
result = subprocess.run("python sample_argparse.py --numbers 4 5 6 -append")
result: [1]
result: [1, 2, 3, 100]
result: [4, 5, 6, 100]
まとめ
argparseモジュールを使用することで、プログラムの引数を簡単に扱うことができます。初心者にも扱いやすく、コマンドラインからの引数処理を行うプログラムを作成する場合は、argparseを積極的に活用することをおすすめします。
関連検索ワード
How to use python “argparse” module?
How to use python “argparse” library?
関連キーワード
python, 入門, 使い方, 初心者, argparse, module