はじめに
アルバイト先で行うメールの開封データの定期的な集計を、私以外のメンバーでも簡単に触れるようにコマンドラインから実行できるようにしました!
動作環境
MacOS Monterey
python 3.10.6
click 8.1.3
実装
全体のコードはこんな感じです。
import click
import time
from module.output import usual_open_ratio, usual_click_ratio
@click.group()
def cli():
pass
@cli.command()
@click.option("--open_ratio", prompt="開封率を出力しますか?[y/N]", type=bool)
@click.option("--click_ratio", prompt="反応率を出力しますか?[y/N]", type=bool)
def usual_analyze(open_ratio, click_ratio):
if open_ratio:
n = click.prompt("何回分の開封率を出力しますか?", type=int)
usual_open_ratio(n, False)
print("finish!")
if click_ratio:
n = click.prompt("何回分の反応率を出力しますか?", type=int)
usual_click_ratio(n, False)
print("finish!")
if __name__ == "__main__":
cli()
--helpをつけて実行すると、関数usual_analyze()がコマンドとして提示されていることが確認できます。
$ python main.py --help
Usage: main.py [OPTIONS] COMMAND [ARGS]...
Options:
--help Show this message and exit.
Commands:
usual-analyze
実際に実行してみます。
$ python main.py usual-analyze
開封率を出力しますか?[y/N]: y
反応率を出力しますか?[y/N]: y
何回分の開封率を出力しますか?: 10
finish!
何回分の反応率を出力しますか?: 10
finish!
オプションを指定しているので、インタラクティブに実行することができました!
実際のコードはGithubに載せています。