2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Pythonのclickを使って業務効率化するCLIを作った

Posted at

はじめに

アルバイト先で行うメールの開封データの定期的な集計を、私以外のメンバーでも簡単に触れるようにコマンドラインから実行できるようにしました!

動作環境

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に載せています。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?