は、Unicode 文字の文字列ではなく、バイナリ シーケンスのバイトであることb
を示します。bytes
文字ではなく出力バイトをサブプロセスするため、それ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'