subprocess.Popen() - Stream Stout

Dieses Thema im Forum "Ruby, php, Perl, Python ..." wurde erstellt von Nexus633, 30.12.2014.

  1. #1 Nexus633, 30.12.2014
    Zuletzt bearbeitet: 06.01.2015
    Nexus633

    Nexus633 Eroberer

    Dabei seit:
    10.01.2014
    Beiträge:
    56
    Zustimmungen:
    0
    subprocess.Popen() - Stream Stdout

    Hallo liebe leute,
    ich mal wieder :-)

    Ich habe ja in meinen vorherigen Threads beschrieben was ich machen möchte.
    Für die die es nicht wissen, gelesen haben. Es geht um einen Installer der die Skripte für die Kommunikation zwischen webinterface und Server ermöglicht.
    Das ganze habe ich in Bash bereits realisiert (Vor 1 Jahr als ich meinen ersten Thread gepostet habe :-))

    Nun habe ich mich in Python verliebt :-) <3 xD

    Ich habe nun folgendes Problem. Ich muss natürlich auch Software wie Screen bz2 etc... Installieren und Natürlich auch Optionale Software die vom Kunden ausgewählt wird.
    Ich habe im Internet leider nur die Möglichkeit gefunden mit subprocess.Popen oder mit os.Popen (obwohl ich hier denke das der Namensraum OS den Namensraum Subprocess Included hat und das ein und der selber Befehl ist :-)) den Paketmanager auszuführen. Wir gehen nun mal nur von Debian aus.

    wenn ich als Test eine Frage von apt Provoziere, also apt-get remove htop - Möchten Sie fortfahren [J/n]?: und das in einem Stream ausgebe, fehlt mir genau diese Zeile...

    Code:
    #!/usr/bin/env python
    
    from subprocess import *
    
    proc = Popen('apt-get remove htop',
                           shell=True,
                           stdout=PIPE,
                           )
    while proc.poll() is None:
        output = proc.stdout.readline()
        print(output.replace("\n",""))
    
    Resault:
    1ANw1dI.png

    Wie mache ich das am besten ?

    hat jemand von euch eine Idee ?

    Gruß
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Gast123, 30.12.2014
    Gast123

    Gast123 Guest

  4. #3 Nexus633, 30.12.2014
    Nexus633

    Nexus633 Eroberer

    Dabei seit:
    10.01.2014
    Beiträge:
    56
    Zustimmungen:
    0
    Hey,
    danke für die Antwort....
    Nur wie ?

    Ich finde zwar da einen Teil dazu aber nicht wie ich diese Definiere.
    Hast du ein Beispiel für mich ?

    Gruß
     
  5. #4 Gast123, 31.12.2014
    Gast123

    Gast123 Guest

    Der Konstruktor
    Code:
    subprocess.Popen(..)
    nimmt die Standarddatenströme als Argumente auf.
    Also musst du nur eine Pipe für den STDIN, respektive den STDERR Strom definieren, so wie du es auch für den STDOUT gemacht hast.
    Wobei ich mich frage, warum du in dem konkreten Anwendungsfall überhaupt die Eingabe abfragen willst.
    Für eine Stapelverarbeitung ist es vielleicht intelligenter, interaktive Rückfragen zu unterdrücken.

    MfG

    Schard
     
  6. #5 Nexus633, 05.01.2015
    Nexus633

    Nexus633 Eroberer

    Dabei seit:
    10.01.2014
    Beiträge:
    56
    Zustimmungen:
    0
    Hey,
    Sorry für die späte Antwort...
    Ich komme erst heute dazu weiter zu machen.

    Ich werde das nachher mit der PIPE probieren. Das mit dem installieren war ein Beispiel. Der Einsatz kommt aber öfter vor.

    Danke dir

    Gruß

    Gesendet von meinem HTC One mit Tapatalk
     
  7. #6 Nexus633, 05.01.2015
    Nexus633

    Nexus633 Eroberer

    Dabei seit:
    10.01.2014
    Beiträge:
    56
    Zustimmungen:
    0
    Hey,
    auch die PIPE beim stdin funktioniert leider nicht.
    Mir fehlt leider noch immer die abfragezeile...

    Code:
    proc = Popen('apt-get remove htop',
                            shell=True,
                            stdout=PIPE,
                            stdin=PIPE
                            )
    while proc.poll() is None:
        output = proc.stdout.readline()
        stdout.write(output)
    
    Aktuell noch das beispiel "apt-get remove htop" - Wie bereits gesagt geht es aber nicht nur um diese Funktion... Ich brauche es in mehreren fällen.
    Hat da jemand noch eine Idee ?!

    Gruß
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. #7 karloff, 05.01.2015
    karloff

    karloff Routinier

    Dabei seit:
    09.07.2007
    Beiträge:
    317
    Zustimmungen:
    0
    Ort:
    ~/
    Moin,

    schau dir mal das sys modul an also sys.sdout oder sys.stderr.
    Hatte sowas auch mal vor einiger Zeit, weiß nur nicht mehr im welchem script muss ich bei zeiten mal schauen wie ich es damals gelöst habe.

    Alternativ kann ich dir für python fragen das python forum empfehlen [http://www.python-forum.de] die Leute dort konnten mir zumindest immer weiterhelfen.
     
  10. #8 Nexus633, 06.01.2015
    Nexus633

    Nexus633 Eroberer

    Dabei seit:
    10.01.2014
    Beiträge:
    56
    Zustimmungen:
    0
Thema:

subprocess.Popen() - Stream Stout

Die Seite wird geladen...

subprocess.Popen() - Stream Stout - Ähnliche Themen

  1. Pipe stream auf email

    Pipe stream auf email: Hi Leute, Ich experimentiere mit RTLSDR und multimon-ng :) Das Ziel meiner Sache ist es eine POCSAG Meldungm zu empfangen und dann per Mail an...
  2. Firefox demnächst mit FFmpeg statt GStreamer

    Firefox demnächst mit FFmpeg statt GStreamer: Wohl schon die kommende Version von Firefox wird beim Abspielen von Medien auf FFmpeg zurückgreifen statt auf GStreamer. Die Entwickler...
  3. GStreamer 1.6 erschienen

    GStreamer 1.6 erschienen: Das GStreamer-Projekt hat das Kernsystem, die Plugins und den RTSP-Server des freien Multimedia-Frameworks in Version 1.6 veröffentlicht....
  4. Stream an Flachbildglozue übertragen

    Stream an Flachbildglozue übertragen: Hallo Kann man an einem USB-Anschluß an einem Flachbildschirm (Fernseher, hat leider kein RJ45 Anschluß) einen Videostream, aus dem lokalen LAN,...
  5. Firefox OS auf Smart-TVs und als Basis der Streaming-Plattform Flint

    Firefox OS auf Smart-TVs und als Basis der Streaming-Plattform Flint: Auf der CES stellt Panasonic seine neue Smart-TV-Linie für 2015 vor. Als Betriebssytem kommt dabei Firefox OS zum Einsatz. Weiterlesen...