Externes Python Skript via Event Handler aufrufen

  • Guten Abend liebe RPi-Freunde,


    mit welchem Modul bzw. welchem Befehl, lässt sich am einfachsten an markierter Stelle (in der If-Anweisung) in meinem Testcode ein externes Python-Skript aufrufen und dessen Inhalt durchgeführt?


    Hier der Testcode:




    Gruß


    opc

  • Du könntest in einem Python-Skript eine Funktion schreiben, diese Funktion dann in deinem "Haupt-Quelltext" importieren und dann die importierte Funktion ausführen...


    "Funktion" dürfte das Wort sein, das du suchst...

  • Was auch möglich aber nicht so sauber ist:


    import os


    os.system("python /home/pi/deinskript.py")


    Gerade zum ausprobieren recht schnell und einfach

  • Hallo,


    @bigdance69: Uh... das funktioniert zwar wahrscheinlich, ist aber ein echt schlechter, weil total unpythonischer Stil!


    So wie Astorek86 es beschreibt sollte man es machen.


    Gruß, noisefloor

  • Astorek86: mit welchem Befehl kann ich diese Funktion dann importieren?
    Hast du evtl ein Beispiel oder einen link wo ich das nachvollziehen kann? Wäre super...


    bigdane69, noisefloor: könnt ihr mir erklären warum man das nicht machen sollte? Ist es nur einfach Python untypisch oder von der Funktion her bedenklich?


    Gruß
    opc

  • Astorek86: mit welchem Befehl kann ich diese Funktion dann importieren?
    Hast du evtl ein Beispiel oder einen link wo ich das nachvollziehen kann? Wäre super...

    Ich bitte dich, die entsprechenden Suchbegriffe über Google einzugeben. Nicht, weil ich ein schlechter oder fauler Mensch bin, sondern weil sowas zu den Grundlagen zur Recherche gehört. Glaub mir, es bringt mehr, sich sowas selbst beizubringen. Das ist wirklich ganz einfach ;) .


    Quote

    könnt ihr mir erklären warum man das nicht machen sollte? Ist es nur einfach Python untypisch oder von der Funktion her bedenklich?

    Es hat mehrere Nachteile; am Offensichtlichsten ist, dass du innerhalb von Python eine weitere Python-Instanz startest, was Zeit und Ressourcen kostet (am RPi braucht das Skript schon merkbar ein bis zwei Sekunden, bis es startet). Außerdem ist [font="Courier"]os.system[/font] als "deprecated" markiert, d.h. deren Funktionalität für zukünftige Python-Versionen ist nicht mehr garantiert. Die Entwickler können die Funktion jederzeit wieder aus der Sprache tilgen (was auch der Sinn einer deprecated-Markierung ist).

  • Ok ich danke dir für dir Erklärung. Funktionen sind mir grundsätzlich klar nur deren Import aus einem anderen Skript nicht ;)


    Werde nachher mal Google bemühen diesbezüglich.

  • Unter http://www.python-kurs.eu/modularisierung.php
    findet man folgenden Auszug, der denk ich mal mein Vorhaben beschreibt:




    Im Prinzip importiert man andere Python-Skripte wie Module.
    Werde das heute Abend mal ausprobieren.


    Gruß
    opc