Message353803
However print() called with non-str argument would firstly call str() on it, which is most likely not what reporter wanted:
>>> print(b'\x80')
b'\x80'
>>> str(b"\x80")
"b'\\x80'"
>>> print(str(b"\x80"))
b'\x80'
$ python -c "print(b'\x80')" > test.txt
$ xxd test.txt
00000000: 6227 5c78 3830 270a b'\x80'.
Proper solution is to write to files opened in binary mode, which in case of stdout and stderr means to use sys.stdout.buffer and sys.stderr.buffer:
>>> sys.stdout.buffer.write(b"\x80")
�1
$ python -c "import sys; sys.stdout.buffer.write(b'\x80')" > test.txt
$ xxd test.txt
00000000: 80 . |
|
Date |
User |
Action |
Args |
2019-10-03 01:53:47 | Arfrever | set | recipients:
+ Arfrever, ammar2, Artificial |
2019-10-03 01:53:47 | Arfrever | set | messageid: <1570067627.38.0.114305911034.issue38357@roundup.psfhosted.org> |
2019-10-03 01:53:47 | Arfrever | link | issue38357 messages |
2019-10-03 01:53:47 | Arfrever | create | |
|