[pypy-issue] Issue #2557: file.read(1) returns 2 bytes when inappropriate flag is given on opening binary file (pypy/pypy)
CHANGBEOM YUN
issues-reply at bitbucket.org
Sat May 13 23:30:27 EDT 2017
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)
```
More information about the pypy-issue
mailing list