本書は、Pythonでコマンドラインから実行するスクリプトを作成する方法についての本です。
Pythonがインストールされていれば使える argparse
モジュールの基本を学び、
argparseで画像縮小スクリプトを作ります。
また、長く開発するためにリファクタリングしたり、unittestを書いたりします。
対象者はPython入門者〜中級者なりたての方です。
本書を元にPython入門書のコードをコマンドラインから引数を与えて運用しやすく書き直し、使いやすいスクリプトで楽しく自動化していただけたら嬉しいです。
企画趣旨について詳しくは https://nikkie-ftnext.hatenablog.com/entry/gishohaku2-argparse-book
(サークルカットのQRコードからアクセスできるページです)
サンプルコード
https://github.com/ftnext/code-argparse-book
目次
- はじめに
- 誰のための本?
- 本書の構成
- オススメの読み方(なぜ本書を書いたか)
- 連絡事項
はじめてargparse
- 挨拶をするPythonスクリプト
- 挨拶をするPythonスクリプトを作る
- 「おまじない」 if name == "main"
- スクリプトに引数を渡す2つの方法
- 1つ目: sys.argv
- sys.argv でややピンチ!
- 2つ目: argparse
- argparse でコマンドライン引数を指定する方法
- 位置引数
- optional引数
- optional引数を使うときの注意点
- argparseお役立ち情報
- まとめ
ようこそargparse
- 作り始める前に
- 指定された画像ファイルを縮小するコマンドラインツール
- 画像を縮小するPythonスクリプトの解説
- argparseを導入する
- リファクタリング:関数を導入
- 機能追加:ディレクトリに入った画像をすべて縮小できるようにする
- 縮小した画像の保存先を指定できるようにする
- ディレクトリの中の画像をすべて保存する処理を組み込む
- 機能追加後の画像縮小スクリプト
- 機能追加:存在するファイル/ディレクトリを指すパスかどうかの検証を追加する
- 存在しないファイル/ディレクトリを指すパスにまつわる問題とその解決法
- 機能追加後の画像縮小スクリプト
- まとめ
コマンドラインツールのテストコードを書く
テストコードを書くための準備
existing_path 関数をテストする
- 存在するファイルを指すパスを渡した場合のテスト
- 存在しないファイルを指すパスを渡した場合のテスト
- テストコードの重複を除く
shrink_image 関数の処理を分割する
- 対象となる画像ファイルかどうかを判定する部分を切り出す
- 画像を縮小する必要があるかを判定する部分を切り出す
- 縮小後のサイズを返す部分を切り出す
shrink_image 関数をテストする
- モック、テストで鍵となる存在
- モックを使って関数の呼び出し方をテストする
- モックを使って shrink_image 関数のテストを書く
- テストが通るように shrink_image 関数を書き直す
- save_path が指定されたケースも実装する
まとめ
あとがきに代えて