Ich habe versucht, ein Python-Dienstprogramm aus dem Code zu verwenden, in dem ich schreibe gehen. Ich habe versucht, stdin/stdout zu verwenden, um zwischen den Prozessen zu kommunizieren. Allerdings bekomme ich einen EOF-Fehler mit Pythons raw_input()
, auch wenn ich seine stdin auf go's stdin verbinde.EOF Fehler beim Ausführen von Python 2.7-Code von Golang
Hier ist der Code, das Problem zu reproduzieren:
test.go:
package main
import (
"os"
"os/exec"
)
func main() {
cmd := exec.Command("python", "test.py")
cmd.Stderr = os.Stderr
cmd.Stdout = os.Stdout
cmd.Stdin = os.Stdin
// Start the process
if err := cmd.Start(); err != nil {
panic(err)
}
}
test.py:
while True:
input = raw_input()
print input
Der Fehler, den ich bekommen ist
Traceback (most recent call last):
File "test.py", line 3, in <module>
input = raw_input()
EOFError
Ich verstehe nicht, warum das ein wäre Problem. Hat jemand irgendwelche Eingaben?
Ah, ich verstehe. Das macht Sinn. Was also, wenn ich möchte, dass das Python-Skript unbegrenzt läuft? Ist es für mich sinnvoll, einfach eine neue goroutine zu starten, den Python-Prozess dort zu starten und dann cmd.Wait() von dieser Routine zu machen? Vielen Dank! – Seth