linecache —テキスト行へのランダムアクセス
ソースコード: :source: `Lib / linecache.py`
linecache モジュールを使用すると、1つのファイルから多くの行が読み取られる一般的なケースであるキャッシュを使用して内部的に最適化を試みながら、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.clearcache()
- キャッシュをクリアします。 以前に getline()を使用して読み取ったファイルの行が不要になった場合は、この関数を使用します。
- linecache.checkcache(filename=None)
- キャッシュの有効性を確認してください。 キャッシュ内のファイルがディスク上で変更されている可能性があり、更新されたバージョンが必要な場合は、この機能を使用してください。 filename を省略すると、キャッシュ内のすべてのエントリがチェックされます。
- linecache.lazycache(filename, module_globals)
後の呼び出しで module_globals が
None
であっても、 getline()を介して後でその行を取得できるように、非ファイルベースのモジュールに関する十分な詳細をキャプチャします。 これにより、モジュールグローバルを無期限に持ち歩く必要がなく、ラインが実際に必要になるまでI / Oを実行する必要がなくなります。バージョン3.5の新機能。
例:
>>> import linecache
>>> linecache.getline(linecache.__file__, 8)
'import sys\n'