[Python実践]argparseに挑戦!《ArgumentParser編》
はじめに
今回はPythonの「argparse」の基礎と「ArgumentParser」の使い方について解説していこうと思います!
「add_argument」についてはこちらを参考にしてください。
「argparse」コマンドライン引数を渡してくれるもので、Pythonエンジニアを目指している方は知っておいた方が良いものになります。
ぜひこの記事でマスターしていってください!
この記事はPythonの公式ドキュメントを参考にしています。
Pythonに限らず、プログラミング言語の公式ドキュメントは非常に読みにくいので、この記事でわかりやすく解説していきます。
「argparse使ってみたい」
「コマンドライン引数を渡してみたい」
「argparseって何?」
「自作モジュール作ってみたい」
このような人のお役に立てれば幸いです。
それでは早速本題に入っていきましょう!
概要
まずはargparseについて説明していきましょう。
argparseは一言で言えば以下のようになります。
これではよくわからないですよね。
「コマンドライン引数」とは、以下のようにPythonファイルを呼び出す際に渡せる値のことです。
python main.py --n cardene --age 30
少し詳しく説明すると、--nはname
で今回はcardeneを渡しています。
--age
は30という値を渡しています。
def user_profile(name, age):
print(name)
print(age)
こんな感じの関数があったとして、cardeneがname
引数に、30がage
に渡されるということです。
どうでしょうか理解できたでしょうか?
このように引数が指定されることで、ユーザーごとにカスタムして使えるようにになります。
僕自身Pypiに自作モジュールをあげたことがあります。
このモジュールもterminalでも使用することができ、その際には「コマンドライン引数」を渡す必要があります。
この記事ではその方法を学んでいきます。
「コマンドライン引数」を設定する際、結構細かく設定できるのでぜひ全てマスターしていってください!
基本
まずは基本的な使い方をざっくりみていきます。
理解できなくても大丈夫なのでまずはみていきましょう!
まずはArgumentParser
オブジェクトを作成することから始める。
import argparse
parser = argparse.ArgumentParser(description='かるでねブログ用のテストコード')
parser
というオブジェクトを作成しました。
ここに2つの「コマンドライン引数」を追加していきます。
import argparse
parser = argparse.ArgumentParser(description='かるでねブログ用のテストコード')
parser.add_argument('name', type=str, nargs='+', default='cardene', help='username')
parser.add_argument('--age', '-a', nargs='+', type=int, help='user age')
args = parser.parse_args()
name
とage
という引数を追加しました。
terminalで確認してみましょう。
python main.py --h
usage: main.py [-h] [--age AGE [AGE ...]] name [name ...]
かるでねブログ用のテストコード
positional arguments:
name username
optional arguments:
-h, --help show this help message and exit
--age AGE [AGE ...], -a AGE [AGE ...]
user age
1行目のコマンドをterminalに入力すると以下のように出力されます。
--h
はhelpの略で、「コマンドライン引数」の使い方を確認できます。
positional arguments
は必須に引数です。
optional arguments
はオプションの引数で、なくても問題ないものです。
コード上でどう指定するかというと、Pythonコードのname
と--age
の部分を見ればわかります。
--
というのが先頭についているとオプション引数で、ついていないと必須引数となります。
早速コマンドライン引数を渡してみましょう!
terminalで以下のコマンドを実行してください。
python main.py cardene -a 30
name
にcardeneを渡し、age
に30を渡しました。
Namespace(name=['cardene'], age=[30])
そうすると上記のように出力されました。
ここまでで基本的な使い方を確認しました!
続き
これより先は以下の記事にまとめています。
より詳しくArgumentparserについて学ぶことができるので、興味がある方はぜひ!
(もちろん無料です!)
Discussion