Я фиксирую вывод утилиты командной строки с помощью subprocess.popen()< /code> и обработка стандартного вывода построчно с помощью процесса.stdout.readline() (который возвращает объект байтов). Я хочу преобразовать каждую строку стандартного вывода в строку, но когда я конвертирую ее с помощью output.decode(), она либо (1) возвращает пустую строку (даже если в объекте байтов есть текст), либо ( 2) возвращает только последнюю строку объекта bytes.
Я просмотрел документацию Python для Code.decode, но не могу понять, почему это происходит и как это исправить. .
Ниже приведен фрагмент кода, который я использую, и несколько примеров выходных данных.
Фрагмент кода:
Код: Выделить всё
output = process.stdout.readline() # returns a bytes object
if output:
print(str(output))
print(output.decode())
оператор первой печати ( объект байтов):
Код: Выделить всё
b'0M Scan C:\\Users\\Me\\Documents\\\r \r24 folders, 8 files, 65 bytes (1 KiB)'
Код: Выделить всё
24 folders, 8 files, 65 bytes (1 KiB)Код: Выделить всё
Scan C:\\Users\\Me\\Documents\\
24 folders, 8 files, 65 bytes (1 KiB)
первый оператор печати (объект bytes ):
Код: Выделить всё
b'0%'"" (пустая строка )
(Я ожидал, что это будет именно так:)
Код: Выделить всё
0%Подробнее здесь: https://stackoverflow.com/questions/790 ... -only-last