Seite 2 von 2

Re: Subprocess-Modul

Verfasst: Dienstag 10. April 2012, 06:07
von BlackJack
@MarcelF6: Du meinst hoffentlich mit Hilfe von `repr()` hast Du den Fehler gefunden und nicht behoben. Du versuchst hier entschieden zu oft Datenstrukturen in Zeichenketten umzuwandeln statt damit richtig zu arbeiten.

Re: Subprocess-Modul

Verfasst: Dienstag 10. April 2012, 10:56
von Leonidas
Außerdem kann man statt ``python`` noch ``sys.executable`` schreiben, dann funktionierts auch wenn zum Beispiel ``python`` ein Python 3 ist, oder man eine lokale Installation nutzt oder sonstwas.

Re: Subprocess-Modul

Verfasst: Dienstag 10. April 2012, 11:47
von MarcelF6
@BlackJack: Ja; so meinte ichs: Ich konnte den Fehler dank repr() finden - und dank dem auch verbesseren. (aber nicht mir repr(), korrekt.)

@Leonideas: Merkwürdig. Mit 'python' funktionierts wunderbar, aber wenn ich 'python' durch 'sys.executable' ersetze (sys bereits importiert), dann kriege ich einen Fehler:
OSError: [Errno 2] No such file or directory
Wir sollen es zwar sowieso per 'python' machen - aber wenns per 'sys.executable' auch funktionieren soll, dann ist das etwas komisch. (Oder müsste man das file tok.py abändern, um 'sys.executable' verwenden zu können?

Re: Subprocess-Modul

Verfasst: Dienstag 10. April 2012, 12:12
von Leonidas
Also das sys.executable ist natürlich dann kein String mehr - soweit bist du schon, oder?

Re: Subprocess-Modul

Verfasst: Dienstag 10. April 2012, 12:30
von MarcelF6
Ah, dann ist es klar, warum der Fehler auftritt.
Ja, ich war soweit. Allerdings habe ich gesehen, dass wir es für die Weiterverarbeitung beim String belassen müssen - daher bleibe ich auch bei 'python'. Danke aber für den Hinweis!

Re: Subprocess-Modul

Verfasst: Dienstag 10. April 2012, 12:49
von cofi
Was Leonidas meint:

Code: Alles auswählen

process = subprocess.Popen([sys.executable, 'tok.py'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
statt

Code: Alles auswählen

process = subprocess.Popen(['python', 'tok.py'], stdin=subprocess.PIPE, stdout=subprocess.PIPE)
Das hat nichts mit den eigentlichen Daten zu tun.

Re: Subprocess-Modul

Verfasst: Dienstag 10. April 2012, 13:53
von MarcelF6
Ah - tatsächlich. Beide Varianten funktionieren wie erwartet :)
Vielen Dank für den Hinweis!