ホームページ > バックエンド開発 > Python チュートリアル > Python パッケージ内の静的ファイルを効率的に読み取るにはどうすればよいですか?

Python パッケージ内の静的ファイルを効率的に読み取るにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-10 10:13:14
オリジナル
299 人が閲覧しました

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

Python パッケージ内の静的ファイルの読み取り

はじめに

Python パッケージ内のファイルの読み取りは、特に次のような静的ファイルにアクセスする場合、困難になることがあります。コード自体の一部ではありません。この記事では、これを実現するための 2 つの方法、つまり 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 パッケージに依存するため、より安全で直感的です。 Python バージョン 3.7 より前の場合は、バックポートされた importlib.resources ライブラリを使用できます。

以上がPython パッケージ内の静的ファイルを効率的に読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート