Seite 1 von 1

codesnipped in file auslagern??

Verfasst: Mittwoch 30. Juli 2003, 16:29
von Christian
hallo!

ich möchte von fall zu fall andere module in mein python script laden. da ich aber keinen modulnamen als variable nehmen kann. möchte ich nun eine if-abfrage drum rum schreiben:

beispiel:

Code: Alles auswählen

if x == 1:
    from DetailScript import Mod as Modifier
if x == 2:
    from DetailScript import Bla as Modifier
da von zeit zu zeit neue scripte hinzukommen und ich nicht ständig das script bearbeiten möchte, will ich diesen teil in eine separate datei auslagern. und dann in meinem script einfach dieses txt file einbinden.

ist das möglich?


oder kennt vieleicht jemand eine ellegante lösung, wie ich z.b. den namen des zu importierenden moduls per variable an das script übergeben könnte?

freue mich über viele hilfreiche antworten...

viele grüße,
christian

Verfasst: Mittwoch 30. Juli 2003, 16:52
von Milan
Schreib den teil doch in ein extra Modul und mach im Hauptprogramm dann:

Code: Alles auswählen

from zwischenmodul import *
dann hast du auch alles im Hauptprogram...

Verfasst: Donnerstag 31. Juli 2003, 02:43
von Beyond
Du kannst Dir auch den Python-Modul-Lademechanismus anschaueen.
Es gibt Möglichkeiten Module direkt aus Dateien/Stringgs zu generieren ähnlich wie eval.

cu beyond

Verfasst: Donnerstag 31. Juli 2003, 14:17
von NEBULA
Es gibt die __import__ Funktion, liegt die Moduldatei die du laden willst im Pythonpfad dann kannst du ueber diese Funktion das Modul laden.

Bsp:

Code: Alles auswählen

modul = __import__(<Dateiname ohne Endung>,globals(),locals(),[])
Eine andere und vielleicht die bessere Variante ist du benutzt das Modul imp aus der Standardbibliothek und benutzt aus diesem Modul die Funktion load_source.

Code: Alles auswählen

import imp
load_source(name, pathname, file) 
Wichtig dabei ist, dass file wirklich ein Dateiobjekt ist, sprich etwas wie open("x.y","r")

Diese Methode hab ich selbst allerdings bislang nicht genutzt, ich hab bislang die __import__-Funktion genutzt.