Pythonでスクリプトを書いて色々と楽を出来る様にする。

何処でも使えるような単純なスクリプトを書く時、 どこかにまとめて保存して何処でも呼び出せる様にしておくと便利だと気づきました。

例えば、「ちょっとこのテキストの単語の出現頻度とかみたいな〜」という時に

$ cat test.txt | frequency.py

みたいな感じで何処でも呼び出せたりしたら便利ですよね。 積極的に楽していきましょう。

スクリプトを保存する所を決める。

こういうのって皆してると思うのですが、 何処に保存しておくのが一般的なのでしょうか?

僕は~/src/scriptsというディレクトリを作ってそこに入れる事にしました。

$ mkdir -p ~/src/scripts
$ cd ~/src/scripts

PATHを通す

何処でも呼び出せる様にパスを通します。 僕はzshを使っているので.zshrcに書き込みます。

export PATH=$PATH:$HOME/src/scripts/

zshに補完される様にする。

frequency.py なんて、長くて覚えられないし、打つのも怠いのでzshに補完される様にします。

zstyle ':completion:*' command 'ls /Users/sakao/src/scripts'

スクリプトを作る

frequency.pyを作りましょう

#!/usr/bin/env python
# coding:utf-8

import sys
import os

from collections import Counter
import MeCab

m = MeCab.Tagger("-Owakati")

def tokenize(string):
    return m.parse(string).split()

def main():
    tokens = tokenize(sys.stdin.read())
    counter = Counter(tokens)
    for word, cnt in counter.most_common():
        print word, cnt

if __name__ == "__main__":
    main()

実行権限を与える

$ chmod u+x frequency.py

これで実行権限を与える事が出来ました。

試してみる

$ cd ~
$ echo "本日は晴天なり。\n本日は曇天なり。" | frequency.py
本日 2
は 2
。 2
なり 2
曇天 1
晴天 1

ちゃんと動くようです。便利。