10.9. linecache — テキストラインにランダムアクセスする

ソースコード: Lib/linecache.py


linecache モジュールは、キャッシュ (一つのファイルから何行も読んでおくのが一般的です) を使って、内部で最適化を図りつつ、任意のファイルの任意の行を取得するのを可能にします。 traceback モジュールは、整形されたトレースバックにソースコードを含めるためにこのモジュールを利用しています。

linecache モジュールでは次の関数が定義されています:

linecache.getline(filename, lineno[, module_globals])

filename という名前のファイルから lineno 行目を取得します。この関数は決して例外を発生させません — エラーの際には '' を返します (行末の改行文字は、見つかった行に含まれます)。

filename という名前のファイルが見つからなかった場合、モジュールの、つまり、 sys.path でそのファイルを探します。 zipfileやその他のファイルシステムでないimport元に対応するためまず module_globalsPEP 302 __loader__ をチェックし、そのあと sys.path を探索します。

バージョン 2.5 で追加: パラメータ module_globals の追加.

linecache.clearcache()

キャッシュをクリアします。それまでに getline() を使って読み込んだファイルの行が必要でなくなったら、この関数を使ってください。

linecache.checkcache([filename])

キャッシュが有効かチェックします。キャッシュしたファイルにディスク上で変更があったかもしれなくて、更新が必要なときにこの関数を使ってください。もし filename がなければ、全てのキャッシュエントリをチェックします。

例:

>>> import linecache
>>> linecache.getline('/etc/passwd', 4)
'sys:x:3:3:sys:/dev:/bin/sh\n'