Maison > développement back-end > Tutoriel Python > Comment accéder aux fichiers statiques intégrés dans les packages Python ?

Comment accéder aux fichiers statiques intégrés dans les packages Python ?

Barbara Streisand
Libérer: 2024-12-01 17:53:10
original
323 Les gens l'ont consulté

How to Access Static Files Embedded in Python Packages?

Récupération de fichiers statiques dans les packages Python

Problème :

Comment récupérer un fichier empaqueté au sein d'un package Python, étant donné qu'il n'est pas accessible via le chemin de fichier standard méthodes ?

Structure du package :

Considérons une structure de package dans laquelle les modèles sont stockés dans un dossier "templates" imbriqué :

<package>
  |-- <module>
  |-- templates
        |-- temp_file
Copier après la connexion

Solution :

Il existe plusieurs méthodes pour récupérer le fichier :

1. Utilisation de importlib.resources (Python 3.7) :

from importlib import resources as impresources

resource_package = __name__
resource_path = "templates/temp_file"

try:
    inp_file = impresources.files(resource_package) / resource_path
    with inp_file.open("rb") as f:
        template = f.read()
except AttributeError:
    # Python < 3.9
    template = impresources.read_text(resource_package, resource_path)
Copier après la connexion

2. Utilisation de pkg_resources (setuptools) :

import pkg_resources

resource_package = __name__
resource_path = "/".join(("templates", "temp_file"))

template = pkg_resources.resource_string(resource_package, resource_path)
Copier après la connexion

Détails :

  • importlib.resources est la méthode préférée car elle est plus efficace et intuitive.
  • les outils de configuration ne doivent pas être utilisés dans les exigences d'exécution plus.
  • N'oubliez pas d'inclure les fichiers statiques dans votre setup.py ou MANIFEST.

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!

source:php.cn
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