コマンドライン引数で指定したファイルや標準入力からの入力を簡単に処理できるモジュール。
fileinput.input で各ファイルから1行ずつ読み込んでくれる。
次の例は、ファイルの各行をファイル名と行番号つきで出力する。
import fileinput for line in fileinput.input(): print fileinput.filename(), fileinput.filelineno(), ":", line.rstrip("\n")
実行例:
^o^ > python file_input.py fib.py file_read.py fib.py 1 : def fib(): fib.py 2 : a = 1 fib.py 3 : b = 1 fib.py 4 : while True: fib.py 5 : yield a fib.py 6 : a, b = b, a+b fib.py 7 : fib.py 8 : fib.py 9 : i = fib() fib.py 10 : fib.py 11 : for c in range(10): fib.py 12 : print i.next() fib.py 13 : file_read.py 1 : import sys file_read.py 2 : file_read.py 3 : filename = sys.argv[1] file_read.py 4 : print filename file_read.py 5 : print "--" file_read.py 6 : file_read.py 7 : file = open(filename, "r") file_read.py 8 : contents = file.read() file_read.py 9 : print contents file_read.py 10 : file.close() file_read.py 11 :
標準入力へリダイレクトした場合:
^o^ > python file_input.py < fib.py <stdin> 1 : def fib(): <stdin> 2 : a = 1 <stdin> 3 : b = 1 <stdin> 4 : while True: <stdin> 5 : yield a <stdin> 6 : a, b = b, a+b <stdin> 7 : <stdin> 8 : <stdin> 9 : i = fib() <stdin> 10 : <stdin> 11 : for c in range(10): <stdin> 12 : print i.next() <stdin> 13 :
パイプを使った場合:
^o^ > type fib.py | python file_input.py <stdin> 1 : def fib(): <stdin> 2 : a = 1 <stdin> 3 : b = 1 <stdin> 4 : while True: <stdin> 5 : yield a <stdin> 6 : a, b = b, a+b <stdin> 7 : <stdin> 8 : <stdin> 9 : i = fib() <stdin> 10 : <stdin> 11 : for c in range(10): <stdin> 12 : print i.next() <stdin> 13 :