Seite 1 von 1

Variable Routine aufrufen ...

Verfasst: Sonntag 29. Januar 2023, 11:28
von drnicolas
Klingt blöd, aber mir fällt kein besseres Subject ein ....

Es geht darum, daß ich als Teil eines grösseren Skriptes eine Routine aufrufen möchte, die sich ändert.

Es geht darum eine Datei je nach Anwendungsfall weiter zu behandeln

Erste Lösung wäre , mit einer längeren if..elseif Abfrage und fixen Prozeduraufrufen zu arbeiten.

Da das Skript ohnehin mit einer Konfigurationsdatei arbeitet, habe ich eine Zeile "postprocessing_script= ..." mit dem Namen eines Skriptes

dieses wird dann mit subprocess.Popen samt Parametern aufgerufen.

Ist das geschickt oder gibt es da eine bessere Lösung?

Re: Variable Routine aufrufen ...

Verfasst: Sonntag 29. Januar 2023, 12:24
von Sirius3
Was meinst du mit Routine die sich ändert?
Wenn du abhängig von einem Parameter verschiedene Funktionen aufrufen möchtest, dann verwende am besten ein Wörterbuch, dessen Werte die Funktion sind.

Re: Variable Routine aufrufen ...

Verfasst: Sonntag 29. Januar 2023, 12:27
von __blackjack__
@drnicolas: Man kann Module auch dynamisch importieren (`importlib`) und dann eine feste Funktion, zum Beispiel `main()` in dem dynamisch importierten Modul aufrufen. Oder auch eine API definieren, die von so einem Modul erfüllt werden muss. Inklusive Testfunktion ob das Modul für die Datei zuständig ist. Also statt einem langen ``if``/``elif``-Konstrukt viele Module die dynamisch importiert werden, und die alle eine Testfunktion haben die entscheiden kann ob das Modul für die Datei zuständig/geeignet ist oder nicht, und eine Funktion die die Datei verarbeitet. Statt fester Funktionsnamen könnte man auch mit Dekoratoren arbeiten, mit denen man die entsprechenden Funktionen registrieren kann — dann könnte man auch Module schreiben die für mehrere Dateien zuständig sind, oder Funktionen für eine Datei auf mehrere Module verteilen. Der Fantasie sind da kaum Grenzen gesetzt. Man sollte nur aufpassen, dass man am Ende nicht selber ein Plugin-System wie beispielsweise `pluggy` programmiert, wo man einfach ein fertiges hätte nehmen können. 🙂

Re: Variable Routine aufrufen ...

Verfasst: Sonntag 29. Januar 2023, 12:51
von grubenfox
Also für ein minimales Plugin-System reichten damals 6 Zeilen. Der originale Link von 2008 funktioniert nicht mehr, aber hier https://web.archive.org/web/20090403053 ... framework/ kann man es noch mal nachlesen...