[Tutor] subprocess.getstatusoutput : UnicodeDecodeError

Evuraan evuraan at gmail.com
Thu Sep 21 18:46:29 EDT 2017


Greetings!

My search-fu failed me, so thought of finally asking this question here.


How can I work around this issue where  subprocess.getstatusoutput gives
up, on Python 3.5.2:

>>> subprocess.getstatusoutput("tail -3 /tmp/pmaster.db",)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python3.5/subprocess.py", line 805, in getstatusoutput
    data = check_output(cmd, shell=True, universal_newlines=True,
stderr=STDOUT)
  File "/usr/lib/python3.5/subprocess.py", line 626, in check_output
    **kwargs).stdout
  File "/usr/lib/python3.5/subprocess.py", line 695, in run
    stdout, stderr = process.communicate(input, timeout=timeout)
  File "/usr/lib/python3.5/subprocess.py", line 1059, in communicate
    stdout = self.stdout.read()
  File "/usr/lib/python3.5/encodings/ascii.py", line 26, in decode
    return codecs.ascii_decode(input, self.errors)[0]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 189:
ordinal not in range(128)
>>>

That file's content is kryptonite for python apparently. Other shell
operations work.

>>> subprocess.getstatusoutput("file /tmp/pmaster.db",)
(0, '/tmp/pmaster.db: Non-ISO extended-ASCII text, with very long lines,
with LF, NEL line terminators')
>>> subprocess.getstatusoutput("wc -l  /tmp/pmaster.db",)
(0, '155065 /tmp/pmaster.db')
>>> subprocess.getstatusoutput("tail -3 /tmp/pmaster.db",)


Thanks in advance for your time and advice!


More information about the Tutor mailing list