Subprocess-Modul

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
MarcelF6
User
Beiträge: 226
Registriert: Samstag 3. März 2012, 21:30

@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?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Also das sys.executable ist natürlich dann kein String mehr - soweit bist du schon, oder?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
MarcelF6
User
Beiträge: 226
Registriert: Samstag 3. März 2012, 21:30

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!
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
MarcelF6
User
Beiträge: 226
Registriert: Samstag 3. März 2012, 21:30

Ah - tatsächlich. Beide Varianten funktionieren wie erwartet :)
Vielen Dank für den Hinweis!
Antworten