Python logged str(stdout)
, но stdout
- это поток байтов, поэтому вы получили полное представление bytes
, начинающееся с b'
, а обратная строка sh экранирована символом новой строки. Вы должны сначала расшифровать его. Использование кодировки по умолчанию в вашей системе должно работать
>>> import logging
>>> logging.basicConfig()
>>> import subprocess as subp
>>> cmd = subp.Popen(["ls"], stdout=subp.PIPE, stderr=subp.STDOUT)
>>> stdout, stderr = cmd.communicate()
>>> logging.warning(stdout)
ПРЕДУПРЕЖДЕНИЕ: root: b'a.py \ nb.py \ n c .py \ ne.py \ nf.py \ ng .py \ nh.py \ ni.py \ nj.py \ nl.py \ n__pycache __ \ n '
>>> logging.warning(stdout.decode())
WARNING:root:a.py
b.py
c.py
e.py
f.py
g.py
h.py
i.py
j.py
l.py
__pycache__