importlib.resources.abc – Abstrakta basklasser för resurser

Källkod: Lib/importlib/resources/abc.py


Tillagd i version 3.11.

class importlib.resources.abc.ResourceReader

Ersatt av TraversableResources

En abstrakt basklass för att ge möjlighet att läsa resurser.

I det här ABC:s perspektiv är en resurs en binär artefakt som levereras i ett paket. Vanligtvis är detta något som en datafil som lever bredvid paketets __init__.py-fil. Syftet med den här klassen är att hjälpa till att abstrahera åtkomsten till sådana datafiler så att det inte spelar någon roll om paketet och dess datafil(er) lagras t.ex. i en zip-fil eller i filsystemet.

För alla metoder i denna klass förväntas ett resource-argument vara ett path-like object som konceptuellt bara representerar ett filnamn. Detta innebär att inga sökvägar till underkataloger bör inkluderas i resource-argumentet. Detta beror på att platsen för det paket som läsaren är avsedd för fungerar som ”katalog”. Därför är metaforen för kataloger och filnamn paket respektive resurser. Det är också därför som instanser av denna klass förväntas vara direkt korrelerade till ett specifikt paket (i stället för att potentiellt representera flera paket eller en modul).

Laddare som vill stödja resursläsning förväntas tillhandahålla en metod som heter get_resource_reader(fullname) som returnerar ett objekt som implementerar detta ABC-gränssnitt. Om den modul som anges av fullname inte är ett paket, bör denna metod returnera None. Ett objekt som är kompatibelt med denna ABC bör endast returneras när den angivna modulen är ett paket.

Föråldrad sedan version 3.12: Använd importlib.resources.abc.TraversableResources istället.

abstractmethod open_resource(resource)

Returnerar ett öppnat, filliknande objekt för binär läsning av resursen.

Om resursen inte kan hittas genereras FileNotFoundError.

abstractmethod resource_path(resource)

Returnerar filsystemets sökväg till resursen.

Om resursen inte finns i filsystemet, uppstår FileNotFoundError.

abstractmethod is_resource(name)

Returnerar True om namnet name anses vara en resurs. FileNotFoundError uppstår om name inte finns.

abstractmethod contents()

Returnerar en iterable av strängar över innehållet i paketet. Observera att det inte är nödvändigt att alla namn som returneras av iteratorn är faktiska resurser, t.ex. är det acceptabelt att returnera namn för vilka is_resource() skulle vara false.

Att tillåta att icke-resursnamn returneras är för att möjliggöra situationer där det på förhand är känt hur ett paket och dess resurser lagras och icke-resursnamnen skulle vara användbara. Det är t.ex. tillåtet att returnera namn på underkataloger så att dessa namn på underkataloger kan användas direkt när det är känt att paketet och resurserna lagras i filsystemet.

Den abstrakta metoden returnerar en iterabel utan objekt.

class importlib.resources.abc.Traversable

Ett objekt med en delmängd av pathlib.Path-metoder som lämpar sig för genomgång av kataloger och öppning av filer.

För en representation av objektet i filsystemet, använd importlib.resources.as_file().

name

Abstrakt. Basnamnet för detta objekt utan några överordnade referenser.

abstractmethod iterdir()

Yield Traverserbara objekt i self.

abstractmethod is_dir()

Returnerar True om self är en katalog.

abstractmethod is_file()

Returnerar True om self är en fil.

abstractmethod joinpath(*pathsegments)

Traversera kataloger enligt vägsegment och returnera resultatet som Traversable.

Varje pathsegments-argument kan innehålla flera namn åtskilda av snedstreck (/, posixpath.sep ). Till exempel är följande likvärdiga:

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

Observera att vissa Traversable-implementationer kanske inte är uppdaterade till den senaste versionen av protokollet. För kompatibilitet med sådana implementationer, ge ett enda argument utan sökvägsseparatorer till varje anrop till joinpath. Till exempel:

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

Ändrad i version 3.11: joinpath accepterar flera sökvägssegment, och dessa segment kan innehålla snedstreck som sökvägsseparatorer. Tidigare accepterades endast ett enda child-argument.

abstractmethod __truediv__(child)

Returnerar Traversable child i self. Motsvarar joinpath(child).

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

mode kan vara ’r’ eller ’rb’ för att öppna som text eller binär. Returnerar ett handtag som är lämpligt för läsning (samma som pathlib.Path.open).

När den öppnas som text accepteras kodningsparametrar som de som accepteras av io.TextIOWrapper.

read_bytes()

Läser innehållet i sig själv som bytes.

read_text(encoding=None)

Läs innehållet i dig själv som text.

class importlib.resources.abc.TraversableResources

En abstrakt basklass för resursläsare som kan hantera importlib.resources.files()-gränssnittet. Underklassificerar ResourceReader och tillhandahåller konkreta implementationer av ResourceReaders abstrakta metoder. Därför tillhandahåller alla laddare som tillhandahåller TraversableResources också ResourceReader.

Laddare som vill stödja resursläsning förväntas implementera detta gränssnitt.

abstractmethod files()

Returnerar ett importlib.resources.abc.Traversable-objekt för det laddade paketet.