>백엔드 개발 >파이썬 튜토리얼 >Python 패키지 내에서 정적 파일을 효율적으로 읽으려면 어떻게 해야 합니까?

Python 패키지 내에서 정적 파일을 효율적으로 읽으려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-10 10:13:14299검색

How Can I Efficiently Read Static Files Within My Python Packages?

Python 패키지 내에서 정적 파일 읽기

소개

Python 패키지 내에서 파일을 읽는 것은 어려울 수 있으며, 특히 다음과 같은 정적 파일에 액세스할 때 더욱 그렇습니다. 코드 자체의 일부가 아닙니다. 이 기사에서는 이를 달성하기 위한 두 가지 방법, 즉 pkg_resources 모듈과 최신 importlib.resources 모듈을 살펴봅니다.

방법 1: setuptools에서 pkg_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)

방법 2: Python에 importlib.resources 사용 >= 3.7

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.