Pour lire un fichier situé dans un package Python, il existe plusieurs approches disponibles. Une méthode recommandée consiste à utiliser le module importlib.resources introduit dans Python 3.7.
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()
Cette approche offre plusieurs avantages par rapport à l'ancien module pkg_resources. Elle est plus performante, plus sûre, ne nécessite aucune manipulation de chemin et s'appuie uniquement sur la bibliothèque standard.
Pour ceux qui utilisent des versions Python antérieures à 3.7, ou pour une compatibilité ascendante, la bibliothèque importlib_resources peut être rétroportée.
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')
Dans ce contexte, la fonction resources.files() renvoie un objet PathLike qui représente le chemin d'accès au fichier cible. Le paramètre nom_ressource représente désormais le nom de fichier dans le package, sans aucun séparateur de chemin. Pour accéder à un fichier dans le module actuel, spécifiez __package__ comme argument du package (par exemple, resources.read_text(__package__, 'temp_file')).
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!