Das b
gibt an, dass Sie bytes
eine 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 bytes
Typ ist nicht direkt in der print()
Lage, daher wird Ihnen der Typ angezeigt, repr
den bytes
Sie 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 hi
ausgegeben wurde. echo
Die 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'