Python パッケージ内にあるファイルを読み取るには、いくつかの方法があります。利用可能なアプローチ。推奨される方法の 1 つは、Python 3.7 で導入された importlib.resources モジュールを利用することです。
from importlib import resources from . import templates inp_file = resources.files(templates) / 'temp_file' # open the file using the file-like stream context manager with inp_file.open("rt") as f: template = f.read()
このアプローチには、従来の pkg_resources モジュールに比べていくつかの利点があります。よりパフォーマンスが高く、より安全で、パス操作が不要で、標準ライブラリのみに依存します。
3.7 より前のバージョンの Python を使用している場合、または下位互換性のために、importlib_resources ライブラリをバックポートできます。
try: from importlib import resources except ImportError: import importlib_resources from . import templates inp_file = resources.files(templates) / 'temp_file' try: with inp_file.open("rb") as f: # or "rt" as text file with universal newlines template = f.read() except AttributeError: # Python < PY3.9, fall back to method deprecated in PY3.11. template = resources.read_text(templates, 'temp_file')
このコンテキストでは、resources.files() 関数は、ターゲット ファイルへのパスを表す PathLike オブジェクトを返します。 resource_name パラメータは、パス区切り文字なしでパッケージ内のファイル名を表すようになりました。現在のモジュール内のファイルにアクセスするには、パッケージ引数として __package__ を指定します (例: resource.read_text(__package__, 'temp_file'))。
以上がPython パッケージ内の静的ファイルにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。