Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich alle Module effizient aus einem Verzeichnis in Python importieren?

Wie kann ich alle Module effizient aus einem Verzeichnis in Python importieren?

Barbara Streisand
Barbara StreisandOriginal
2024-11-27 21:15:10437Durchsuche

How Can I Efficiently Import All Modules from a Directory in Python?

Alle Module in einen Ordner laden

Das Importieren eines Modulverzeichnisses kann eine bequeme Möglichkeit sein, eine große Anzahl verwandter Module zu verwalten. Die Verwendung der standardmäßigen from-Anweisung kann jedoch zu unerwartetem Verhalten führen, wie im folgenden Beispiel zu sehen ist:

/Foo
    bar.py
    spam.py
    eggs.py

Das Hinzufügen einer __init__.py-Datei und die Verwendung von from Foo import * führen möglicherweise nicht zum gewünschten Ergebnis.

Lösung: alle Variable generieren

Um alle richtig zu laden Module in einem Ordner können Sie die folgende Methode verwenden:

  1. Alle Python-Dateien (.py) im Ordner auflisten.
  2. Erstellen Sie eine all-Variable in __init__.py.
  3. Füllen Sie all mit dem Basisnamen jeder Datei aus und entfernen Sie die .py Erweiterung.

Hier ist der Python-Code für diese Lösung:

from os.path import dirname, basename, isfile, join
import glob
modules = glob.glob(join(dirname(__file__), "*.py"))
__all__ = [ basename(f)[:-3] for f in modules if isfile(f) and not f.endswith('__init__.py')]

Diese Lösung erstellt dynamisch eine Liste von Modulnamen und weist sie allen zu in __init__.py. Dadurch können Sie alle Module im Ordner importieren, indem Sie einfach from Foo import *.

verwenden

Das obige ist der detaillierte Inhalt vonWie kann ich alle Module effizient aus einem Verzeichnis in Python importieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn