Python パッケージ内のファイルの読み取りは、特に次のような静的ファイルにアクセスする場合、困難になることがあります。コード自体の一部ではありません。この記事では、これを実現するための 2 つの方法、つまり 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 パッケージに依存するため、より安全で直感的です。 Python バージョン 3.7 より前の場合は、バックポートされた importlib.resources ライブラリを使用できます。
以上がPython パッケージ内の静的ファイルを効率的に読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。