New issue 2557: file.read(1) returns 2 bytes when inappropriate flag is given
on opening binary file
https://bitbucket.org/pypy/pypy/issues/2557/fileread-1-returns-2-bytes-when
CHANGBEOM YUN:
I'm using CPython 2.7.13 and PyPy 5.7.1 on Windows 10 Professional (64bit).
When I tried to extract each byte to integer with Python script from a PDF
file, I accidentally forgot to put 'rb' flag on opening. So, I put 'r' for
reading binary file.
While CPython works without an exception (not sure outputs are correct), PyPy
throws an exception saying ord() got string of length 2 instead of single
character.
I attached scripts and binary file i used for testing. Thanks.
Versions:
```
#!plain
C:\Users\nidev\PyPyBugReproduce>pypy --version
Python 2.7.13 (14f400f0498e, Mar 31 2017, 19:58:36)
[PyPy 5.7.1 with MSC v.1500 32 bit]
C:\Users\nidev\PyPyBugReproduce>python --version
Python 2.7.13
```
Executing wrong one with PyPy and CPython:
```
#!text
C:\Users\nidev\PyPyBugReproduce>pypy wrong_byteencoder.py void.pdf > output.txt
Traceback (most recent call last):
File "wrong_byteencoder.py", line 13, in <module>
print(ord(c))
TypeError: ord() expected a character, but string of length 2 found
C:\Users\nidev\PyPyBugReproduce>python wrong_byteencoder.py void.pdf >
output.txt
(exited cleanly)
```
Executing right one with PyPy and CPython:
```
#!text
C:\Users\nidev\PyPyBugReproduce>pypy right_byteencoder.py void.pdf > output.txt
(exited cleanly)
C:\Users\nidev\PyPyBugReproduce>python right_byteencoder.py void.pdf >
output.txt
(exited cleanly)
```
_______________________________________________
pypy-issue mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-issue