linecache — Zufälliger Zugriff auf Textzeilen¶
Quellcode: Lib/linecache.py
Das Modul linecache ermöglicht den Zugriff auf beliebige Zeilen einer Python-Quelldatei, wobei intern versucht wird, den häufigsten Fall, bei dem viele Zeilen aus einer einzelnen Datei gelesen werden, durch einen Cache zu optimieren. Dies wird vom Modul traceback verwendet, um Quellzeilen für die Aufnahme in die formatierte Rückverfolgung abzurufen.
Die Funktion tokenize.open() wird zum Öffnen von Dateien verwendet. Diese Funktion verwendet tokenize.detect_encoding(), um die Kodierung der Datei zu ermitteln; wenn kein Kodierungs-Token vorhanden ist, ist die Standardkodierung der Datei UTF-8.
Das Modul linecache definiert die folgenden Funktionen
- linecache.getline(filename, lineno, module_globals=None)¶
Gibt Zeile lineno aus der Datei filename zurück. Diese Funktion wird niemals eine Ausnahme auslösen – sie gibt im Fehlerfall
''zurück (das abschließende Zeilenumbruchzeichen wird für gefundene Zeilen eingeschlossen).Wenn filename ein gefrorenes Modul angibt (beginnt mit
'<frozen '), versucht die Funktion, den tatsächlichen Dateinamen ausmodule_globals['__file__']zu ermitteln, wenn module_globals nichtNoneist.Wenn eine Datei namens filename nicht gefunden wird, prüft die Funktion zuerst, ob in module_globals ein PEP 302
__loader__vorhanden ist. Wenn ein solcher Loader existiert und eine Methodeget_sourcedefiniert, dann bestimmt diese die Quellzeilen (wennget_source()Nonezurückgibt, dann wird''zurückgegeben). Schließlich, wenn filename ein relativer Dateiname ist, wird er relativ zu den Einträgen im Modulsuchpfad,sys.path, gesucht.Geändert in Version 3.14: Unterstützung für filename von gefrorenen Modulen.
- linecache.clearcache()¶
Leert den Cache. Verwenden Sie diese Funktion, wenn Sie Zeilen aus zuvor mit
getline()gelesenen Dateien nicht mehr benötigen.
- linecache.checkcache(filename=None)¶
Prüft die Gültigkeit des Caches. Verwenden Sie diese Funktion, wenn sich Dateien im Cache auf der Festplatte geändert haben könnten und Sie die aktualisierte Version benötigen. Wenn filename weggelassen wird, werden alle Einträge im Cache überprüft.
- linecache.lazycache(filename, module_globals)¶
Erfasst genügend Details über ein Modul, das nicht auf Dateien basiert, um später über
getline()auf seine Zeilen zugreifen zu können, auch wenn module_globals beim späteren AufrufNoneist. Dies vermeidet E/A-Vorgänge, bis eine Zeile tatsächlich benötigt wird, ohne die Modul-Globals auf unbestimmte Zeit mit sich führen zu müssen.Hinzugefügt in Version 3.5.
Beispiel
>>> import linecache
>>> linecache.getline(linecache.__file__, 8)
'import sys\n'