subprocess - Mehrzeilige Rückgabe verarbeiten?

  • Hallo,

    habe mich nun einmal mit Python versucht, um mein LCD anzusteuern. Dabei möchte ich nun Daten aus einem PHP-Script ausgeben. Das funktioniert bis jetzt auch schon teilweise. Jedoch habe ich das Problem, dass das PHP-Script mehrere Werte zurückgibt, welche in verschiedenen Zeilen stehen. Wie kann ich diese am besten in Python übernehmen. Brächte diese soweit ich bisher verstanden habe auch in Python in verschiedenen Variablen um diese dann am Display ausgeben zu können.

    Meine Abfrage der PHP-Datei in Python sieht wie folgt aus:

    Code
    subprocess.Popen("php /var/www/test.php", shell=True, stdout=subprocess=PIPE)
    #zu meiner ersten Zeile komme ich mittels
    var=proc.stdout.read()

    Danke im Voraus!
    Lg User

    • Offizieller Beitrag

    warum holst du die werte fürs display nicht einfach über python anstelle des abstrusen wegs über php? Schau dir subprocess mal genauer an, dort gibt es sowas wie communicate. Dort kannst du dir stdout und error in eine variable umleiten und dann auswerten. Ich hab ein Beispiel schon mehrfach hier im forum gepostet. die boardsuche zum thema subprocess oder communicate sollte dich schnell dorthin bringen ;)

    Eine Beispielausgabe wäre auch hilfreich. :)

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

    Einmal editiert, zuletzt von dbv (9. Dezember 2013 um 21:33)

  • Ich glaube ich habe die richtigen Threads nicht gefunden, bzw. mit diesen, welche ich gefunden habe, das Problem leider auch nicht lösen können.
    Die Ausgabe in PHP sieht ungefähr wie folgt aus:

    Code
    text1 = 123
    text3 = 568


    Brauchen würde ich nur die Zahlenwerte, desweiteren könnte ich die Ausgabe der PHP-Datei auch noch anpassen, wenn es in einer anderen Art und Weise einfacher zum verarbeiten wäre.

    Diese ganzen Probleme zeigen auch deutlich, wieso ich Python lieber nur zur Ausgabe am Display verwende und den Rest in PHP erledige!

    Danke im Voraus,
    Lg

  • Danke ich habe es geschafft.

    Code
    out=proc.communicate()[0]
    out=out.splitlines()


    Danach ist out ein array mit den jeweiligen Zeilen! Danke!

    Ist doch garnicht so schwer, habe zu Python nur noch keine tolle Dokumentation gefunden!

    Danke und LG

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!