Ini b
menunjukkan bahwa apa yang Anda miliki adalah bytes
, yang merupakan urutan byte biner, bukan string karakter Unicode. Subproses mengeluarkan byte, bukan karakter, jadi itulah yang ditampilkan communicate()
.
The bytes
tipe tidak langsung print()
mampu, jadi Anda sedang menunjukkan repr
dari bytes
yang Anda miliki. Jika Anda mengetahui pengkodean byte yang Anda terima dari subproses, Anda dapat menggunakan decode()
untuk mengubahnya menjadi dapat dicetak str
:
>>> print(b'hi\n'.decode('ascii'))
hi
Tentu saja, contoh khusus ini hanya berfungsi jika Anda benar-benar menerima ASCII dari subproses. Jika bukan ASCII, Anda akan mendapatkan pengecualian:
>>> 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…
Baris baru adalah bagian dari apa yang echo hi
memiliki keluaran. echo
Tugasnya adalah menampilkan parameter yang Anda lewati, diikuti dengan baris baru. Jika Anda tidak tertarik dengan spasi yang mengelilingi keluaran proses, Anda dapat menggunakan strip()
seperti ini:
>>> b'hi\n'.strip()
b'hi'