Python 패키지 내에서 파일을 읽는 것은 어려울 수 있으며, 특히 다음과 같은 정적 파일에 액세스할 때 더욱 그렇습니다. 코드 자체의 일부가 아닙니다. 이 기사에서는 이를 달성하기 위한 두 가지 방법, 즉 pkg_resources 모듈과 최신 importlib.resources 모듈을 살펴봅니다.
setuptools 배포판의 pkg_resources 모듈은 전통적인 패키지 내의 리소스에 액세스하기 위한 접근 방식입니다. 그러나 새로운 방법보다 성능이 떨어집니다.
import pkg_resources # Resource package and path resource_package = __name__ resource_path = '/'.join(('templates', 'temp_file')) # Get the resource as a string or stream template = pkg_resources.resource_string(resource_package, resource_path) # or template = pkg_resources.resource_stream(resource_package, resource_path)
Python 버전 3.7 이상의 경우 importlib.resources 모듈 리소스에 액세스하는 보다 효율적이고 직관적인 방법을 제공합니다.
from importlib import resources # Resource package (must be a package) resource_package = __name__ + '.templates' # Get the resource as a file object (or stream) inp_file = resources.files(resource_package) / 'temp_file' with inp_file.open("rt") as f: template = f.read()
importlib.resources 방법은 pkg_resources보다 훨씬 빠릅니다. 또한 경로 문자열이 아닌 Python 패키지에 의존하기 때문에 더 안전하고 직관적입니다. 3.7 미만의 Python 버전의 경우 백포트된 importlib.resources 라이브러리를 사용할 수 있습니다.
위 내용은 Python 패키지 내에서 정적 파일을 효율적으로 읽으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!