linecache
--- テキストラインへのランダムアクセス¶
ソースコード: Lib/linecache.py
linecache
モジュールは、キャッシュ (一つのファイルから何行も読んでおくのが一般的です) を使って、内部で最適化を図りつつ、Python ソースファイルの任意の行を取得するのを可能にします。 traceback
モジュールは、整形されたトレースバックにソースコードを含めるためにこのモジュールを利用しています。
tokenize.open()
関数は、ファイルを開くために使用されます。この関数は、 tokenize.detect_encoding()
を使用してファイルのエンコーディングを取得します。エンコーディングトークンが存在しない場合、デフォルトの UTF-8 になります。
linecache
モジュールでは次の関数が定義されています:
- linecache.getline(filename, lineno, module_globals=None)¶
filename という名前のファイルから lineno 行目を取得します。この関数は決して例外を発生させません --- エラーの際には
''
を返します (行末の改行文字は、見つかった行に含まれます)。filename という名前のファイルが見付からなかった場合、この関数は最初に module_globals にある PEP 302
__loader__
を確認します。 ローダーが存在していて、get_source
メソッドが実装されていた場合、ソースコードの行を決定します (get_source()
がNone
を返した場合は、''
が返ります)。 最後に、 filename が相対ファイル名だった場合、モジュール検索パスsys.path
のエントリからの相対パスを探します。
- linecache.checkcache(filename=None)¶
キャッシュが有効かどうかを確認します。キャッシュしたファイルがディスク上で変更された可能性があり、更新後のバージョンが必要な場合にこの関数を使用します。 filename が与えられない場合、全てのキャッシュエントリを確認します。
- linecache.lazycache(filename, module_globals)¶
後々の呼び出しで module_globals が
None
となっていても、ファイルの形式でないモジュールの行を後からgetline()
で取得するのに十分な詳細を把握しておきます。この関数により、モジュールの globals を無限に持ち運ぶ必要無しに、実際に必要な行まで I/O を行う必要がなくなります。Added in version 3.5.
以下はプログラム例です:
>>> import linecache
>>> linecache.getline(linecache.__file__, 8)
'import sys\n'