このモジュールは標準入力やファイルの並びにまたがるループを素早く書くため のヘルパークラスと関数を提供しています。
典型的な使い方は以下の通りです:
import fileinput for line in fileinput.input(): process(line)
このプログラムはsys.argv[1:]
に含まれる全てのファイルをまたいで繰
り返します。もし該当するものがなければ、sys.stdin
がデフォルトとし
て扱われます。ファイル名として'-'
が与えられた場合も、
sys.stdin
に置き換えられます。別のファイル名リストを使いたい時には、
input()の最初の引数にリストを与えます。単一ファイル名の文字列
も受け付けます。
全てのファイルはテキストモードでオープンされます。オープン中あるいは読み 込み中にI/Oエラーが発生した場合には、IOErrorが発生します。
sys.stdin
が2回以上使われた場合は、2回目以降は行を返しません。
ただしインタラクティブに利用している時や明示的にリセット
(sys.stdin.seek(0))
を使う)を行った場合はその限りではありません。
空のファイルは開いた後すぐ閉じられます。 空のファイルはファイル名リストの最後にある場合にしか外部に影響を与えませ ん。
ファイルの最後が改行文字で終っていない場合には、最後に改行文字を追加して 返します。
以下の関数がこのモジュールの基本的なインタフェースです:
[files[, inplace[, backup]]]) |
FileInputクラスのインスタンスを作ります。生成されたインスタンス は、このモジュールの関数群が利用するグローバルな状態として利用されます。 この関数への引数はFileInputクラスのコンストラクタへ渡されます。
以下の関数はinput()関数によって作られたグローバルな状態を利用 します。アクティブな状態が無い場合には、RuntimeErrorが発生し ます。
) |
現在読み込み中のファイル名を返します。一行目が読み込まれる前は
None
を返します。
) |
0
を返します。最後のファイルの最終行が読み込まれた後には、その
行の行番号を返します。
) |
現在のファイル中での行番号を返します。1行目が読み込まれる前は0
を
返します。最後のファイルの最終行が読み込まれた後には、その
行のファイル中での行番号を返します。
) |
) |
sys.stdin
から読まれていればTrue、そうでなけ
ればFalseを返します。
) |
現在のファイルを閉じます。次の繰り返しでは(存在すれば)次のファイルの最初 の行が読み込まれます。閉じたファイルの読み込まれなかった行は、累積の行 数にカウントされません。ファイル名は次のファイルの最初の行が読み込まれ るまで変更されません。最初の行の読み込みが行われるまでは、この関数は呼 び出されても何もしませんので、最初のファイルをスキップするために利用す ることはできません。最後のファイルの最終行が読み込まれた後にも、この関 数は呼び出されても何もしません。
) |
このモジュールのシーケンスの振舞いを実装しているクラスの サブクラスを作ることもできます。
[files[, inplace[, backup]]]) |
その場で保存するオプション機能:
キーワード引数 inplace=1
が input()か
FileInputクラスのコンストラクタに渡された場合には、
入力ファイルはバックアップファイルに移動され、標準出力が入力ファイルに設
定されます(バックアップファイルと同じ名前のファイルが既に存在していた
場合には、警告無しに置き替えられます)。
これによって入力ファイルをその場で書き替えるフィルタを書くことができます。
キーワード引数backup='.<拡張子>'
も与えられていれば、バック
アップファイルの拡張子を決めることができます。デフォルトでは
'.bak'
になっています。出力先のファイルが閉じられればバックアップ
ファイルは消されます。その場で保存する機能は、標準入力を読み込んでいる間
は無効にされます。
警告: 現在の実装はMS-DOSの8+3ファイルシステムでは動作しません。
ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。