Python の fileinput モジュール便利
python の fileinput モジュール知らなかった。便利ですねこれ。
10.2. fileinput — Iterate over lines from multiple input streams — Python v2.7.6 documentation
pythonスクリプトを呼び出す際、コマンドライン引数にファイルを指定していればそのファイルから、
指定していなければ標準入力を読み込みます。
典型的なUNIXコマンドと似た動きですね。
だからちょっとしたフィルターコマンドを作るのに重宝します。
例 count_lines.py
#!/usr/bin/env python # -*- coding: utf-8 -*- import fileinput count = 0 for line in fileinput.input(): count += 1 print count
実行
$ ./count_lines.py count_lines.py 7 $ cat count_lines.py | ./count_lines.py 7
複数ファイルを指定するとまとめて処理されます。
$ ./count_lines.py count_lines.py count_lines.py
14
input の引数にファイルのリストを渡すこともできます。
#!/usr/bin/env python # -*- coding: utf-8 -*- import fileinput import glob files = glob.glob("*.txt") count = 0 f = fileinput.input(files) for line in f: count += 1 f.close() print count