【Python入門】Pythonのargparseモジュールとは?使い方と活用方法を徹底解説

Python

Pythonのargparseモジュールは、コマンドライン引数のパーシング(解析)をサポートする標準ライブラリです。argparseを使用すると、簡単にコマンドライン引数を処理して、引数の値に基づいてプログラムの動作を変更できます。この記事では、初心者向けにこの関数の使い方について説明していきます。

下記の様な内容で悩んでいる/困っている場合に使える方法を参考までにご共有させて頂きます。

・Pythonには、どの様にコマンドライン引数を使うの?
・Pythonのargparseモジュールは、どの様に使うのだろうか?

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