Hi,
ich versuche aus einem Python prg heraus zwei andere Programme zu starten.
Das eine funktioniert problemlos, das zweite nicht:
#!/usr/bin/env python
import subprocess
player = subprocess.Popen(["mplayer", "start.mp3"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
Prc_Stream = subprocess.Popen(["mjpg_streamer", "-i", "/usr/local/lib/input_uvc.so -n -y -f 10", "-o" "/usr/local/lib/output_http.so -w /usr/local/www"], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
Der mplayer startet problemlos, der mjpeg_streamer nicht.
Hat jemand eine Idee, warum das nicht geht?
Es kommt keine Fehlermeldung. Das aufrufende Python Programm läuft durch.
Gruß
Florian
programm mit Parameter starten
Das sieht äußerst kurios aus. Du solltest schon alle Parameter als Liste von Argumenten angeben und nicht vereinzelt komplette Blöcke als String wie "/usr/local/lib/input_uvc.so -n -y -f 10". Zudem hast du hinter dem "-o" ein Komma vergessen wodurch die beiden aufeinander folgenden Strings automatisch verkettet werden und damit den Parameter "-o/usr/local/lib/output_http.so -w /usr/local/www" ergeben.wasserflo hat geschrieben:Code: Alles auswählen
Prc_Stream = subprocess.Popen(["mjpg_streamer", "-i", "/usr/local/lib/input_uvc.so -n -y -f 10", "-o" "/usr/local/lib/output_http.so -w /usr/local/www"], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Ich kann ausserdem empfehlen nicht moeglichst viel in eine Zeile zu packen und Leerzeichen zu benutzen, um den Aufruf lesbar zu halten, zB indem man nur ein Argument (des aufgerufenen Programms) pro Zeile benutzt - gilt gerade bei Pfadargumenten - oder sie logisch gruppiert.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte