ubuntuusers.de

Python: subprocess.Popen mit PIPE auslesen...Fehler in subprocess.py

Status: Gelöst | Ubuntu-Version: Ubuntu 9.10 (Karmic Koala)
Antworten |

debobs

(Themenstarter)
Avatar von debobs

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 248

In ABOP steht bei mir Variablen, aber ich werde es dann "gebundene Namen" nennen^^

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

Eine Anmerkung noch. Es ist vielleicht nicht unbedingt sinnvoll, die Ausgabe an den gleichen Namen zu binden wie den Prozess. Vielleicht willst du ja später noch andere Attribute des Prozesses (z.B. den Rückgabewert) auslesen ☺ Außerdem sollte man .communicate() verwenden, wenn man die gesamte Ausgabe lesen möchte. Das spart zum einen eine Zeile, weil .wait() dann überflüssig ist, zum anderen ist robuster als .stdout.read(). Ich würde deinen Quelltext also so umsetzen:

1
2
hamachi = subprocess.Popen(["hamachi", "list"], stdout=subprocess.PIPE)
stdout, _ = hamachi.communicate()

Anschließend ist in stdout die Ausgabe des Prozesses zu finden, die du anschließend weiterverarbeiten kannst.

Ferio Team-Icon

Avatar von Ferio

Anmeldungsdatum:
24. April 2007

Beiträge: 383

debobs schrieb:

In ABOP steht bei mir Variablen, aber ich werde es dann "gebundene Namen" nennen^^

Darfst es ruhig Variablen nennen.

debobs

(Themenstarter)
Avatar von debobs

Anmeldungsdatum:
30. Oktober 2008

Beiträge: 248

Lunar, die Methode mit read() finde ich besser da sie mir das anzeigt was ich haben will 😉

Ferio, hätte ich eh gemacht 😀

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

debobs schrieb:

Lunar, die Methode mit read() finde ich besser da sie mir das anzeigt was ich haben will 😉

Und was unterscheidet den Rückgabewert von communicate() nun von Deinem Ergebnis?

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

Ferio schrieb:

debobs schrieb:

In ABOP steht bei mir Variablen, aber ich werde es dann "gebundene Namen" nennen^^

Darfst es ruhig Variablen nennen.

Dann hört er "Python hat keine Variablen" allerdings bei jeder Frage früher oder später wieder 😉

@debobs: .communicate() gibt exakt das Gleiche zurück ...

Antworten |