Maison > développement back-end > Tutoriel Python > Comment puis-je accéder aux fichiers statiques dans un package Python ?

Comment puis-je accéder aux fichiers statiques dans un package Python ?

Mary-Kate Olsen
Libérer: 2024-12-05 09:10:13
original
804 Les gens l'ont consulté

How Can I Access Static Files Inside a Python Package?

Comment accéder aux fichiers statiques dans un package Python

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()
Copier après la connexion

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')
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal