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'