🐍

[Python実践]argparseに挑戦してみよう!《add_subparsers編》

2022/05/02に公開

はじめに

今回はPythonの「argparse」の基礎と「parse_args」と「add_subparsers」の使い方について解説していこうと思います!

第1弾と第2弾はこちら!

https://chaldene.net/argparse-argumentparser

https://chaldene.net/argparse-addargument

argparse」はコマンドライン引数を渡してくれるもので、Pythonエンジニアを目指している方は知っておいた方が良いものになります。

ぜひこの記事でマスターしていってください!

この記事はPythonの公式ドキュメントを参考にしています。

Pythonに限らず、プログラミング言語の公式ドキュメントは非常に読みにくいので、この記事でわかりやすく解説していきます。

argparse使ってみたい

コマンドライン引数を渡してみたい

argparseって何?

自作モジュール作ってみたい

他の人が書いたコードでargparseの部分がわからない

このような人のお役に立てれば幸いです。

それでは早速本題に入っていきましょう!

https://chaldene.net/python-book

概要

まずはargparseについて説明していきましょう。

argparseは一言で言えば以下のようになります。

これではよくわからないですよね。

コマンドライン引数」とは、以下のようにPythonファイルを呼び出す際に渡せる値のことです。

python main.py --n cardene --age 30

少し詳しく説明すると、--nはnameで今回はcardeneを渡しています。

--age30という値を渡しています。

def user_profile(name, age):
    print(name)
    print(age)

こんな感じの関数があったとして、cardenename引数に、30ageに渡されるということです。

どうでしょうか理解できたでしょうか?

このように引数が指定されることで、ユーザーごとにカスタムして使えるようにになります。

僕自身Pypiに自作モジュールをあげたことがあります。

https://pypi.org/project/comnamepy/

このモジュールもterminalでも使用することができ、その際には「コマンドライン引数」を渡す必要があります。

この記事ではその方法を学んでいきます。

「コマンドライン引数」を設定する際、結構細かく設定できるのでぜひ全てマスターしていってください!

parse_args

概要

コマンドライン引数とそれに紐づく値を解析して、適切にリストに格納してくれます。

parse_argsにも指定できるいくつかの引数があるので確認しましょう。

百聞は一見に如かず」ということで早速1つ1つみていきましょう。

args

パーサーに渡したいコマンドライン引数とその値の組みをリストにしたものです。

args = parser.parse_args(["cardene", "--age=10"])

このように指定できます。

位置引数は特にコマンドライン引数名を指定せず、オプション引数のみ指定します。

import argparse

parser = argparse.ArgumentParser()

parser.add_argument('name', help='username')
parser.add_argument('--age', type=int, help='user age')

args = parser.parse_args(["cardene", "--age=10"])

print(args)

8行目で先ほどと同じように指定していますね。

terminalでpython main.py cardene --age 10と実行してください。

Namespace(name='cardene', age=10)

ちゃんと自分が指定した通りに出力されていますね。

続き

これより先は以下の記事にまとめています。

https://chaldene.net/argparse-parseargs

より詳しくadd_subparsersについて学ぶことができるので、興味がある方はぜひ!
(もちろん無料です!)

Discussion