Um eine Datei zu lesen, die sich in einem Python-Paket befindet, gibt es mehrere Ansätze zur Verfügung. Eine empfohlene Methode ist die Verwendung des in Python 3.7 eingeführten Moduls 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()
Dieser Ansatz bietet mehrere Vorteile gegenüber dem alten Modul pkg_resources. Es ist leistungsfähiger, sicherer, erfordert keine Pfadmanipulation und basiert ausschließlich auf der Standardbibliothek.
Für diejenigen, die Python-Versionen vor 3.7 verwenden oder aus Gründen der Abwärtskompatibilität kann die Bibliothek importlib_resources zurückportiert werden.
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')
In diesem Zusammenhang gibt die Funktion resources.files() ein PathLike-Objekt zurück, das den Pfad zur Zieldatei darstellt. Der Parameter „resource_name“ stellt jetzt den Dateinamen innerhalb des Pakets dar, ohne Pfadtrennzeichen. Um auf eine Datei im aktuellen Modul zuzugreifen, geben Sie __package__ als Paketargument an (z. B. resources.read_text(__package__, 'temp_file')).
Das obige ist der detaillierte Inhalt vonWie kann ich auf statische Dateien in einem Python-Paket zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!