Popen
стандартный вывод и ошибки байтов по умолчанию. Печать байтов не пытается печатать переводы строки как таковые, но вместо этого печатает их представление.
До версии 3.5 вы не можете использовать encoding
, но вы, безусловно, можете декодировать вывод в строку, используя bytes.decode
:
a = subprocess.Popen(["grep", "ERR", "errors.log"], stdout=subprocess.PIPE)
print(a.stdout.read().decode())
(decode
может потребоваться аргумент в зависимости от содержимого файла)