Variablennamen können dynamisch angegeben, Dateien dynamisch gelesen und Funktionen und Klassen integriert werden.
ham1.py
import sys
#Eigenes Modul
myself = sys.modules[__name__]
#Hinzufügung von Mitgliedsschinken (entspricht der Deklaration der Schinkenvariablen)
myself.__dict__['ham'] = 'Ham'
#Schinken ausgeben
print(ham)
#>>> Ham
ham2.py
import sys
import glob
import os.path
import importlib
#Importieren Sie vorab das Verzeichnis (Namespace-Paket), das das dynamisch geladene Modul enthält.
import dynamic_hams
#Holen Sie sich Ihr eigenes Modul
myself = sys.modules[__name__]
seq = 0
for mods_dir in dynamic_hams.__path__:
# dynamic_Holen Sie sich die Liste der py-Dateien in Schinken (pyc wird dieses Mal weggelassen)
mod_paths = glob.glob(os.path.join(mods_dir, '*.py'))
for mod_path in mod_paths:
#Dateiname ohne Erweiterung
mod_name = os.path.basename(mod_path).split('.')[0]
#Modul importieren
# 'import dynamic_hams.ham'Gleichwertig
mod = importlib.import_module('dynamic_hams.' + mod_name)
#Weisen Sie sich Modulmitglieder zu
myself.__dict__['incubate'+str(seq)] = mod.incubate
seq += 1
#Da die Inkubationsfunktion sich selbst zugewiesen ist, kann sie von anderen Modulen aufgerufen werden.
incubate0()
incubate1()
...
Python: How to get current module object - python.todaysummary.com 31.5. Importlib - Die Implementierung von Import - Python 3.4.2 Dokumentation
Recommended Posts