Posted at

PythonによるCLIの作成(その1)

More than 1 year has passed since last update.


CLIとは

CLIとはターミナルなどのコマンドライン上で動くインターフェースのことです

自分($\in$ イメージのつかない人達)のためにもう少し詳しく言うと

・ キーボード上で完結するもの

・ ローカル内で完結したり外部にアクセスするものもあったり用途は様々

.....あんまり詳しく説明できてないですね

自分的な解釈だとWebアプリケーションをコマンドラインで動かせるよ的なざっくりした感覚でいいんじゃないかなって思います

とにかく、このCLIをPythonを使って実装していきましょう


必要なもの

Python...バージョンとしては3以降を基準に話しますが、2系でも大丈夫かと思います

※ただし本稿で用いるコードの中ではargparseを用いているのでPython 2.6以前の方は気をつけて下さい


実装にあたって

まず何を実装していくかなのですが、todolistについて扱おうと思います

ただし、それだけだとありふれているので、もっと簡略化したtodonelistと題して作っていきます

つまりは「やったこと」をストックしていくことになります

実装の根本的なベースはパーフェクトPythonを参考にして色々といじっているので、合わせて読んだ方が分かりやすいと思います(というよりこの本読む方がためになるはずです)

実装したコードはこちら


argparse

実装の話をする前にargparseについて備忘録がてら簡単に触れておこうかと思います

例えば実際にCLIを動かす時

$ ./todone.py

のような形で実行する(したい)と思いますが

todonelistをCLIをして運用する場合

・やったことの追加

$ ./todone.py add

・やったことの消去

$ ./todone.py del

など場面に応じて実行する形が異なっている方が便利です

そこでargparseを用いてこういった処理が実現できるようにします

例えばやったことの一覧がほしいとします

$ ./todone.py list

この操作を受けとるPythonコードは以下の様になります

add_parserで追加したい引数を登録することが基本です

import argparse

def main():
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
list_parser = subparsers.add_parser('list')

また、オプションを認める場合はadd_argumentを使います

詳しい使い方はargparseのドキュメントを見た方が早いですが

・ add_argumentでオプションを指定できる

・ set_defaultsで与えられた引数に応じた関数を割り当てることができる

ということを覚えておけば少なくとも困らない気がします

...

list_parser.add_argument('-t', '--tag')
list_parser.add_argument('-s', '--sort', default="id")
list_parser.set_defaults(func=func_name)


終わりに

次回以降手順を踏んでCLIを作成していきます