[New-bugs-announce] [issue43431] Subprocess timeout causes output to be returned as bytes in text mode

Jordan Macdonald report at bugs.python.org
Mon Mar 8 00:41:46 EST 2021


New submission from Jordan Macdonald <macdjord at gmail.com>:

Passing the argument `text=True` to `subprocess.run()` is supposed to mean that any captured output of the called process is automatically decoded and retuned to the user as test instead of bytes.

However, if you give a timeout and that timeout expires, the raised `subprocess.TimeoutExpired` exception will have the captured output as as bytes even if text mode is enabled.

Test output:
bash-5.0$ python3 test_subprocess.py
Version and interpreter information: namespace(_multiarch='x86_64-linux-gnu', cache_tag='cpython-37', hexversion=50792432, name='cpython', version=sys.version_info(major=3, minor=7, micro=7, releaselevel='final', serial=0))
Completed STDOUT Type: <class 'str'>
Completed STDOUT Content: 'Start\nDone\n'
Timeout STDOUT Type: <class 'bytes'>
Timeout STDOUT Content: b'Start\n'

----------
components: Library (Lib)
files: test_subprocess.py
messages: 388257
nosy: macdjord
priority: normal
severity: normal
status: open
title: Subprocess timeout causes output to be returned as bytes in text mode
type: behavior
versions: Python 3.7
Added file: https://bugs.python.org/file49856/test_subprocess.py

_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue43431>
_______________________________________


More information about the New-bugs-announce mailing list