Das bgibt an, dass Sie byteseine binäre Folge von Bytes und keine Folge von Unicode-Zeichen haben. Unterprozesse geben Ausgabebytes und keine Zeichen aus. Das ist also, was communicate()zurückkehrt.
Der bytesTyp ist nicht direkt in der print()Lage, daher wird Ihnen der Typ angezeigt, reprden bytesSie haben. Wenn Sie die Codierung der Bytes kennen, die Sie vom Unterprozess erhalten haben, können Sie decode()sie in eine druckbare konvertieren str:
>>> print(b'hi\n'.decode('ascii'))
hi
Dieses spezielle Beispiel funktioniert natürlich nur, wenn Sie tatsächlich ASCII vom Unterprozess empfangen. Wenn es nicht ASCII ist, erhalten Sie eine Ausnahme:
>>> print(b'\xff'.decode('ascii'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xff in position 0…
Die Newline ist Teil dessen, was echo hiausgegeben wurde. echoDie Aufgabe besteht darin, die Parameter auszugeben, die Sie übergeben, gefolgt von einer neuen Zeile. Wenn Sie nicht an Leerzeichen interessiert sind, die die Prozessausgabe umgeben, können Sie Folgendes verwenden strip():
>>> b'hi\n'.strip()
b'hi'