Python

【Python】コード実行時に値を引き渡す方法【コマンドライン引数】

この記事では、Pythonのコマンドライン引数について解説します。

コマンドライン引数とは、プログラム実行時に引き渡される値です。例えば以下のように実行した場合は、「value1」と「value2」がコマンドライン引数です。

$ python main.py value1 value2

コマンドライン引数を使うことで、プログラム実行時のオプションなどを指定することができます。

それでは、コマンドライン引数の使い方を見ていきましょう❗️

sys.argvでコマンドライン引数を参照する

コマンドライン引数を使用するには、sysモジュールのargvを参照することで、簡単に取得することができます。sysモジュールは、標準ライブラリなのでimportするだけで使用可能です。

import sys

sys.argv

argvには、以下のように値が格納されています。

argv[0] スクリプト名。フルパス名かどうかはOSによって異なります。
argv[1]以降 コマンドライン引数

サンプル

実際にコマンドライン引数を受け取ってみましょう!

main.py

import sys

# 受け取ったコマンドライン引数をargs変数に代入
args = sys.argv

# スクリプト名
print(args[0])

# 第1引数
print(args[1])

# 第2引数
print(args[2])

このコードをターミナルから実行してみます。実行時に「aaa」と「bbb」という値を渡しています。

ターミナルやコマンドプロンプトから実行

$ python3 main.py aaa bbb
main.py
aaa
bbb

argparseでコマンドライン引数を参照する

argparseモジュールを使うことで、より強力にコマンドライン引数を取り扱うことができます。

argparseモジュールは標準ライブラリです

argparseモジュールを用いてコマンドライン引数を取り扱うには、以下の手順で処理を行います。

  • STEP1
    argparseのインポート

    argparseモジュールを使用するために、まずはインポートします。

    import argparse​
  • STEP2
    パーサーの生成

    パーサーを生成します。

    # パーサー作成
    parser = argparse.ArgumentParser()

    ちなみにパーサーとは、なにかしらのルールに則って書かれた文字データを解析し、プログラムで使えるように変換するプログラムのことを言います。

  • STEP3
    コマンドライン引数を追加する

    受け取るコマンドライン引数の情報を追加します。ここで設定された情報はコマンドライン引数を解析する際に使われます。

    # コマンドライン引数の追加
    parser.add_argument()
    実際に使用するには、引数が必要となる
  • STEP4
    コマンドライン引数を解析する

    ステップ3で渡された情報を元に、コマンドライン引数を解析します。

    # コマンドライン引数を解析
    parser.parse_args()

それでは、実際にコマンドライン引数を取得してみましょう!

main.py

import argparse

# パーサー
parser = argparse.ArgumentParser()

# コマンドライン引数追加('arg1'=名前, type=変換する型, help=簡潔な説明)
parser.add_argument('arg1', type=int, help='整数値')
# コマンドライン引数追加(typeは省略されるとstrとなる)
parser.add_argument('arg2', help='文字列')

# コマンドライン引数を解析
args = parser.parse_args()

# 出力
print(f'arg1 = {args.arg1}, 型: {type(args.arg1)}')
print(f'arg2 = {args.arg2}, 型: {type(args.arg2)}')

ターミナルで実行

$ python main.py 123 arg2
arg1 = 123, 型: <class 'int'>
arg2 = arg2, 型: <class 'str'>

ヘルプの表示

コマンドライン引数を解析するプログラムは、コマンドラインにヘルプを表示することができます。ヘルプを表示するには、プログラム実行時に「–help」、または「-h」オプションを指定します。

試しに、先ほどのコードのヘルプを表示してみます。

コマンドラインで実行

$ python main.py -h
usage: main.py [-h] arg1 arg2

positional arguments:
  arg1        整数値
  arg2        文字列

optional arguments:
  -h, --help  show this help message and exit

オプショナル引数

add_argumentメソッドでコマンドライン引数の名前を指定する際に、「–名前」と指定することでオプショナル引数を指定できます。

main.py

import argparse

# パーサー
parser = argparse.ArgumentParser()

# オプショナル引数
parser.add_argument('-a1', '--arg1', type=int)
parser.add_argument('-a2', '--arg2')

# コマンドライン引数を解析
args = parser.parse_args()

# 出力(--の方の名前を使う)
print(f'arg1 = {args.arg1}')
print(f'arg2 = {args.arg2}')
# 辞書として扱いたい場合
print(vars(args))

コマンドラインで実行

$ python main.py -a1 123 -a2 a2
arg1 = 123
arg2 = a2
{'arg1': 123, 'arg2': 'a2'}

まとめ

この記事では、Pythonのコマンドライン引数を使う方法を解説しました。

sys.argvを使えば簡単に取得でき、もっとしっかり使いたい場合はargparseモジュールを使用することで、かなり色々なことができます。

それでは今回の内容はここまでです。ではまたどこかで〜( ・∀・)ノ

最短3か月でエンジニア転職『DMM WEBCAMP COMMIT』