b
何を持っていることであることを示しているbytes
バイトのバイナリ列ではなく、Unicode文字の文字列です。文字ではなく出力バイトをサブプロセスするので、それcommunicate()
が返されます。
bytes
タイプは、直接ではありませんprint()
あなたが表示されているので、可能なrepr
のbytes
あなたが持っているの。サブプロセスから受け取ったバイトのエンコーディングがわかっている場合は、decode()
それらを使用して印刷可能なものに変換できますstr
。
>>> print(b'hi\n'.decode('ascii'))
hi
もちろん、この特定の例は、実際にサブプロセスからASCIIを受信している場合にのみ機能します。ASCIIでない場合は、例外が発生します。
>>> 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…
改行はecho hi
出力されたものの一部です。 echo
の仕事は、渡したパラメータを出力し、その後に改行を続けることです。プロセス出力を囲む空白に興味がない場合は、次のstrip()
ように使用できます。
>>> b'hi\n'.strip()
b'hi'