Ich probiere momenta folgendes:
Code: Alles auswählen
#!/usr/bin/python
import config.callbacks as callbacks
class CommandParser(object):
def __init__(self):
self.callbacks = {}
def register_callback(self, command, callback):
self.callbacks[command] = callback
def parse(self, string):
tokens = string.split()
command = tokens[0].lower()
if self.callbacks.has_key(command):
self.callbacks[command](tokens[1:])
print
parser = CommandParser()
##############################################################################
#Register Callbacks:
parser.register_callback('exit', callbacks.exit)
##############################################################################
while True:
command = str(raw_input('>>> '))
if command != '':
parser.parse(command)
Jetzt wollte ich es aber mehr wie ein Plugin-System gestalten. D.h man hat einen einen "magischen" Ordner wo man seine module reinpackt (wobei jedes Modul eine einzige Funktion ist) und diese dann einfach mit einem bestimmten string der im Modul steckt und der dazugehörigen funktion im parser mittels parser.register_callback() registriert werden. D.h Ich kann einfach kurz eine neue Funktion schreibe diese als Modul abspeichern und in den Ordner schieben. Beim nächsten ausführen das main-scriptes sollte diese Funktion dann registriert sein so das ich sie ansprechen kann.
Oder schreibe ich da besser eine Klasse in der alle Funktionen definiert sind und packe alles in eine Datei?...
Ich halte es mometan (meiner Meinung nach) umständlich.
Meine Scriptstruktur ist folgende:
Code: Alles auswählen
pyEnv:
src:
pyEnv.py
config:
__init__.py
callbacks.py
settings.py
files:
<Hier sind nur ein paar Dateien auf die die funktion in callbacks zugreifen>
<Die Pfade zu den Dateien stehen in der settings.py>
modules:
<Hier sind die nicht in Python inkludierten Module die ich absichlich dahinpacke>
<um das Script möglichst portable zu halten.>
Wie der name sagt "Python Environment"
Ich bin mir sicher das es besser geht, und das jemand eine Lösung zu meinem Problem kennt, also...?
Ich würde mich über ein paar Ideen freuen.