Python

importlib.resources.abc – 리소스용 추상 베이스 클래스

소스 코드: Lib/importlib/resources/abc.py


Added in version 3.11.

class importlib.resources.abc.ResourceReader

TraversableResources로 대체됨

리소스 를 읽는 기능을 제공하는 추상 베이스 클래스 입니다.

이 ABC의 관점에서 리소스 는 패키지 내에 포함된 바이너리 아티팩트입니다. 일반적으로 이는 패키지의 __init__.py 파일 옆에 위치한 데이터 파일과 같은 것입니다. 이 클래스의 목적은 그러한 데이터 파일에 접근하는 방식을 추상화하여, 패키지와 그 데이터 파일이 ZIP 파일 또는 파일 시스템 중 어디에 저장되는지 상관없이 접근할 수 있도록 돕는 것입니다.

이 클래스의 모든 메서드에서 resource 인자는 개념적으로 단지 파일 이름만을 나타내는 경로류 객체 여야 합니다. 즉, resource 인자에 하위 디렉터리 경로가 포함되어서는 안 됩니다. 이는 리더가 대상이 되는 패키지의 위치가 “디렉터리” 역할을 하기 때문입니다. 따라서 디렉터리와 파일 이름에 대한 은유적 대응은 각각 패키지와 리소스입니다. 또한 이 클래스의 인스턴스가 (여러 패키지나 모듈을 나타내는 대신) 특정 패키지와 직접적으로 연관되도록 설계된 이유이기도 합니다.

리소스 읽기를 지원하려는 로더는 이 ABC의 인터페이스를 구현하는 객체를 반환하는 get_resource_reader(fullname) 메서드를 제공해야 합니다. fullname이 가리키는 모듈이 패키지가 아닌 경우, 이 메서드는 None 을 반환해야 합니다. 지정된 모듈이 패키지인 경우에만 이 ABC와 호환되는 객체가 반환되어야 합니다.

버전 3.12부터 폐지됨: 대신 importlib.resources.abc.TraversableResources 를 사용하십시오.

abstractmethod open_resource(resource)

리소스 를 바이너리로 읽기 위해 열린 파일과 유사한 객체 를 반환합니다.

리소스를 찾을 수 없으면 FileNotFoundError 가 발생합니다.

abstractmethod resource_path(resource)

리소스 의 파일 시스템 경로를 반환합니다.

리소스가 파일 시스템에 실제로 존재하지 않으면 FileNotFoundError 를 발생시킵니다.

abstractmethod is_resource(path)

명명된 path 가 리소스로 간주되면 True 를 반환합니다. path 이 존재하지 않으면 FileNotFoundError 가 발생합니다.

버전 3.10에서 변경: name 인자가 path 로 이름이 변경되었습니다.

abstractmethod contents()

패키지 내용에 대한 문자열의 이터러블 을 반환합니다. 이터레이터가 반환하는 모든 이름이 실제 리소스일 필요는 없습니다(예를 들어, is_resource() 가 False인 항목의 이름을 반환해도 무방합니다).

리소스가 아닌 이름도 반환할 수 있도록 허용하는 것은 패키지와 리소스의 저장 방식을 미리 알고 있어 해당 이름들이 유용하게 쓰일 수 있는 상황을 고려한 것입니다. 예를 들어, 하위 디렉터리 이름을 반환함으로써 패키지와 리소스가 파일 시스템에 저장되어 있음을 알 때 해당 하위 디렉터리 이름을 직접 사용할 수 있게 됩니다.

추상 메서드는 항목이 없는 이터러블을 반환합니다.

class importlib.resources.abc.Traversable

디렉터리를 순회하고 파일을 여는 데 적합한 pathlib.Path 메서드 중 일부를 포함하는 객체입니다.

파일 시스템상의 객체 표현을 위해서는 importlib.resources.as_file() 을 사용하십시오.

name

추상 상태입니다. 부모 참조가 없는 이 객체의 기본 이름(base name)입니다.

abstractmethod iterdir()

self 내의 Traversable 객체들을 산출합니다.

abstractmethod is_dir()

self가 디렉터리인 경우 True 를 반환합니다.

abstractmethod is_file()

self가 파일인 경우 True 를 반환합니다.

abstractmethod joinpath(*pathsegments)

pathsegments 에 따라 디렉터리를 순회하고 결과를 Traversable 로 반환합니다.

pathsegments 의 각 인자는 슬래시(/, posixpath.sep)로 구분된 여러 이름을 포함할 수 있습니다. 예를 들어, 다음은 동일합니다:

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

일부 Traversable 구현이 최신 프로토콜 버전으로 업데이트되지 않았을 수 있습니다. 이러한 구현과의 호환성을 위해, joinpath 를 호출할 때 경로 구분 기호가 없는 단일 인자를 제공하십시오. 예를 들어:

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

버전 3.11에서 변경: joinpath 은 여러 개의 pathsegments 를 수용하며, 이 세그먼트들은 경로 구분자로 슬래시를 포함할 수 있습니다. 이전에는 단일 child 인자만 허용되었습니다.

abstractmethod __truediv__(child)

self 내의 Traversable 자식 객체를 반환합니다. joinpath(child) 와 동일합니다.

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

mode 는 텍스트 또는 바이너리로 열기 위해 ‘r’ 또는 ‘rb’가 될 수 있습니다. 읽기에 적합한 핸들을 반환합니다(pathlib.Path.open 과 동일).

텍스트로 열 때, io.TextIOWrapper 가 수용하는 것과 같은 인코딩 파라미터를 수용합니다.

read_bytes()

자기 자신을 바이트로 읽습니다.

read_text(encoding=None)

self의 내용을 텍스트로 읽습니다.

class importlib.resources.abc.TraversableResources

importlib.resources.files() 인터페이스를 제공할 수 있는 리소스 리더용 추상 베이스 클래스입니다. ResourceReader`를 상속하며, :class:!ResourceReader`의 추상 메서드들에 대한 구체적인 구현을 제공합니다. 따라서, TraversableResources`를 공급하는 모든 로더는 :class:!ResourceReader`도 함께 공급하게 됩니다.

리소스 읽기를 지원하려는 로더는 이 인터페이스를 구현해야 합니다.

abstractmethod files()

로드된 패키지에 대한 importlib.resources.abc.Traversable 객체를 반환합니다.

분실물 보관소