ubuntuusers.de

Python soll auf Bash warten

Status: Gelöst | Ubuntu-Version: Server 10.04 (Lucid Lynx)
Antworten |

PublicName

Anmeldungsdatum:
23. Oktober 2011

Beiträge: 85

Hallo ☺

Ich habe das Problem, dass Python mit der weiteren Ausführung nicht auf Bash, was durch

1
process = subprocess.Popen(['/bin/bash'], shell=False, stdin=subprocess.PIPE)

geöffnet wurde, wartet. Durch den Bash-Befehl soll eine Datei geschrieben werden, die zuvor nicht existiert:

1
2
3
4
5
6
process = subprocess.Popen(['/bin/bash'], shell=False, stdin=subprocess.PIPE)
process.stdin.write('blubb > blubber')

daten_file = open("blubber", "r")
daten = daten_file.read()
daten_file.close()

Wird das Skript das erste mal ausgeführt bekomme ich den Fehler:

Traceback (most recent call last):
  File "geblubber.py", line 10, in <module>
    daten_file = open("blubber", "r")
IOError: [Errno 2] No such file or directory: 'blubber'

Wie bekomme ich es hin, dass Python wartet, bis der subprocess beendet ist.

Grüße

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Ein einfacher Blick in die Doku hätte geholfen: Popen.wait()

PublicName

(Themenstarter)

Anmeldungsdatum:
23. Oktober 2011

Beiträge: 85

Popen.wait() kannte ich bereits. Allerdings wollte er es mir mit dem obrigen Code nicht ausführen. Mit

1
2
process = subprocess.Popen("blubb > blubber", shell=True)
process.wait()

lässt er es durchgehen.

Grüße

PS: Danke für den Tipp doch nochmal in der Doku nachzusehen 😉

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Wozu soll das shell=True gut sein?

PublicName

(Themenstarter)

Anmeldungsdatum:
23. Oktober 2011

Beiträge: 85

Ansonsten kann ich innerhalb von Popen() nicht als String schreiben.

Kinch

Anmeldungsdatum:
6. Oktober 2007

Beiträge: 1261

Ohne Shell=True wird '>' nicht richtig interpretiert, da das eben Shell-Syntax ist.

Lysander

Avatar von Lysander

Anmeldungsdatum:
30. Juli 2008

Beiträge: 2669

Wohnort: Hamburg

Kinch schrieb:

Ohne Shell=True wird '>' nicht richtig interpretiert, da das eben Shell-Syntax ist.

Ja richtig, jetzt sehe ich das erst.

Dennoch würde ich darauf verzichten und die Ausgabe dann eben von Python in eine Datei schreiben lassen.

PublicName

(Themenstarter)

Anmeldungsdatum:
23. Oktober 2011

Beiträge: 85

Lysander schrieb:

Dennoch würde ich darauf verzichten und die Ausgabe dann eben von Python in eine Datei schreiben lassen.

Genau so habe ich es jetzt auch gemacht.

Antworten |