萬九郎の硬い船

プログラミング学習記録など

『退屈なことはPythonにやらせよう』8章 演習プロジェクト

8章に入って、いよいよ扱うプログラムが実践的になってきた。学習したことを応用していろいろ作れそうだ。 8章の演習プロジェクトは3つあって、まずは本に載っている「マルチクリップボード」に削除機能を追加するもの。これは簡単だった。

第1コマンドライン引数が'delete'だった場合に第2コマンドラインのキーワードをクリップボード辞書から削除する。 第2コマンドライン引数が'–all'だった場合には辞書を全削除する。'all'の前にハイフンを2つ付ける仕様にしたのは、普段使用する他のコマンドでもオプションはハイフンを2つ付けるようになっていることが多いので、それに習った。ハイフン2つといえば、自分にとって最も身近なところではcssBEM記法で設計する際のelementとmodifierをつなぐのもハイフン2つだったりするが、こういう特殊な記法は見た目は悪いが合理的だ。今回の場合だと、'all'をクリップボード辞書のキーワードに使いたい場合が出てくるかもしれないが、全削除のオプションをハイフンなしの'all'にしてしまっているとそれができなくなる。

次に、「作文ジェネレータ」。

これは元のテキストのプレースホルダを'%(…)s'の形にしておいて、プログラム側では辞書形式を使って複数の変数で置き換えるようにした。

そして、最後は「正規表現検索」。

本に載っていないos.pathのメソッドを少し調べてみると

root, ext = os.path.splitext(file)

で拡張子を分離できることが分かったので、拡張子が'.txt'のファイルの場合のみ開く、という条件の部分に使ってみた(追記:これは'if file.endswith(‘.txt’):‘としても良いようだ)。 ファイルを横断して正規表現検索をする機能自体は普段使うテキストエディタに備わっているので、別にこのスクリプトを書いたからといって実際に使うかといえば使わないのだが、よく知った機能を自力で実装するのは勉強にはなった。