importlib.resources.abc – Abstrakte Basisklassen für Ressourcen

Quellcode: Lib/importlib/resources/abc.py


Hinzugefügt in Version 3.11.

class importlib.resources.abc.ResourceReader

Abgelöst durch TraversableResources

Eine abstrakte Basisklasse, um die Fähigkeit zum Lesen von Ressourcen bereitzustellen.

Aus der Perspektive dieser ABC ist eine Ressource ein binäres Artefakt, das innerhalb eines Pakets ausgeliefert wird. Typischerweise handelt es sich dabei um eine Datendatei, die sich neben der __init__.py-Datei des Pakets befindet. Der Zweck dieser Klasse ist es, den Zugriff auf solche Datendateien zu abstrahieren, sodass es keine Rolle spielt, ob das Paket und seine Datendatei(en) z. B. in einer Zip-Datei oder auf dem Dateisystem gespeichert sind.

Für jede der Methoden dieser Klasse wird erwartet, dass ein Ressourcen-Argument ein pfadähnliches Objekt ist, das konzeptionell nur einen Dateinamen darstellt. Das bedeutet, dass keine Unterverzeichnispfade im Ressourcen-Argument enthalten sein sollten. Dies liegt daran, dass der Speicherort des Pakets, für das der Reader bestimmt ist, als "Verzeichnis" fungiert. Daher sind die Metaphern für Verzeichnisse und Dateinamen Pakete bzw. Ressourcen. Aus diesem Grund wird erwartet, dass Instanzen dieser Klasse direkt mit einem bestimmten Paket korrelieren (anstatt potenziell mehrere Pakete oder ein Modul darzustellen).

Loader, die das Lesen von Ressourcen unterstützen möchten, werden gebeten, eine Methode namens get_resource_reader(fullname) bereitzustellen, die ein Objekt zurückgibt, das die Schnittstelle dieser ABC implementiert. Wenn das durch fullname spezifizierte Modul kein Paket ist, sollte diese Methode None zurückgeben. Ein mit dieser ABC kompatibles Objekt sollte nur zurückgegeben werden, wenn das angegebene Modul ein Paket ist.

Veraltet seit Version 3.12: Verwenden Sie stattdessen importlib.resources.abc.TraversableResources.

abstractmethod open_resource(resource)

Gibt ein geöffnetes, dateiähnliches Objekt für das binäre Lesen der Ressource zurück.

Wenn die Ressource nicht gefunden werden kann, wird FileNotFoundError ausgelöst.

abstractmethod resource_path(resource)

Gibt den Dateisystempfad zur Ressource zurück.

Wenn die Ressource nicht konkret auf dem Dateisystem existiert, wird FileNotFoundError ausgelöst.

abstractmethod is_resource(name)

Gibt True zurück, wenn der genannte Name als Ressource betrachtet wird. FileNotFoundError wird ausgelöst, wenn Name nicht existiert.

abstractmethod contents()

Gibt ein iterierbares Objekt von Zeichenketten über den Inhalt des Pakets zurück. Beachten Sie, dass es nicht erforderlich ist, dass alle vom Iterator zurückgegebenen Namen tatsächliche Ressourcen sind; z. B. ist es akzeptabel, Namen zurückzugeben, für die is_resource() falsch wäre.

Das Zurückgeben von Nicht-Ressourcen-Namen ist erlaubt, um Situationen zu ermöglichen, in denen bekannt ist, wie ein Paket und seine Ressourcen gespeichert sind, und die Nicht-Ressourcen-Namen nützlich wären. Zum Beispiel dürfen Unterverzeichnisnamen zurückgegeben werden, sodass sie direkt verwendet werden können, wenn bekannt ist, dass das Paket und die Ressourcen auf dem Dateisystem gespeichert sind.

Die abstrakte Methode gibt ein leeres iterierbares Objekt zurück.

class importlib.resources.abc.Traversable

Ein Objekt mit einer Teilmenge von Methoden von pathlib.Path, das für das Durchlaufen von Verzeichnissen und das Öffnen von Dateien geeignet ist.

Für eine Darstellung des Objekts auf dem Dateisystem verwenden Sie importlib.resources.as_file().

name

Abstrakt. Der Basisname dieses Objekts ohne übergeordnete Referenzen.

abstractmethod iterdir()

Yield Traversable-Objekte in self.

abstractmethod is_dir()

Gibt True zurück, wenn self ein Verzeichnis ist.

abstractmethod is_file()

Gibt True zurück, wenn self eine Datei ist.

abstractmethod joinpath(*pathsegments)

Durchläuft Verzeichnisse gemäß pathsegments und gibt das Ergebnis als Traversable zurück.

Jedes pathsegments-Argument kann mehrere Namen enthalten, die durch Schrägstriche (/, posixpath.sep) getrennt sind. Zum Beispiel sind die folgenden gleichwertig

files.joinpath('subdir', 'subsuddir', 'file.txt')
files.joinpath('subdir/subsuddir/file.txt')

Beachten Sie, dass einige Traversable-Implementierungen möglicherweise nicht auf die neueste Version des Protokolls aktualisiert wurden. Für die Kompatibilität mit solchen Implementierungen geben Sie ein einzelnes Argument ohne Pfadtrennzeichen bei jedem Aufruf von joinpath an. Zum Beispiel

files.joinpath('subdir').joinpath('subsubdir').joinpath('file.txt')

Geändert in Version 3.11: joinpath akzeptiert mehrere pathsegments, und diese Segmente können Schrägstriche als Pfadtrennzeichen enthalten. Zuvor wurde nur ein einzelnes child-Argument akzeptiert.

abstractmethod __truediv__(child)

Gibt ein Traversable-Kind in self zurück. Äquivalent zu joinpath(child).

abstractmethod open(mode='r', *args, **kwargs)

mode kann 'r' oder 'rb' sein, um als Text oder Binär zu öffnen. Gibt ein Lese-Handle zurück (wie bei pathlib.Path.open).

Beim Öffnen als Text werden Codierungsparameter akzeptiert, wie sie von io.TextIOWrapper akzeptiert werden.

read_bytes()

Liest den Inhalt von self als Bytes.

read_text(encoding=None)

Liest den Inhalt von self als Text.

class importlib.resources.abc.TraversableResources

Eine abstrakte Basisklasse für Ressourcen-Reader, die die importlib.resources.files()-Schnittstelle bedienen können. Erbt von ResourceReader und bietet konkrete Implementierungen der abstrakten Methoden von ResourceReader. Daher liefert jeder Loader, der TraversableResources bereitstellt, auch ResourceReader.

Loader, die das Lesen von Ressourcen unterstützen möchten, werden gebeten, diese Schnittstelle zu implementieren.

abstractmethod files()

Gibt ein importlib.resources.abc.Traversable-Objekt für das geladene Paket zurück.