Variable Routine aufrufen ...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
drnicolas
User
Beiträge: 84
Registriert: Sonntag 24. Juli 2016, 10:32

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?
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

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.
Benutzeravatar
__blackjack__
User
Beiträge: 13103
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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. 🙂
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
grubenfox
User
Beiträge: 430
Registriert: Freitag 2. Dezember 2022, 15:49

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...
Antworten