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'