[issue4386] A binary file should show "b" in its mode
Amaury Forgeot d'Arc
report at bugs.python.org
Sat Nov 22 01:13:19 CET 2008
New submission from Amaury Forgeot d'Arc <amauryfa at gmail.com>:
The changes following r67300 introduced the .mode and .name attributes on all
the file-like objects returned by the open() function.
This also changed the mode returned by a file opened in binary mode: it was
"rb", now it is "r". The fact that the mode does not "round-trip" (i.e: open(f,
mode).mode != mode) was considered not important.
But now it is difficult to see if some opened file was opened in text or binary
mode; in test_gzip.py, a test had to be changed, and now it does not test
anything at all: the intent of the test is just to verify that a zip file is
always opened in binary mode.
Benjamin suggested to change the mode returned by FileIO objects, so that they
always contain a 'b'. They also accept an extra 'b' on creation: it is just
Now, for a file opened in text mode:
>>> f = open('filename')
>>> assert f.mode == 'r'
>>> assert f.buffer.mode == 'rb'
>>> assert f.buffer.raw.mode == 'rb'
The mode attribute is now always consistent with the one passed to the open()
function. This also avoid gratuitous breakage with python2.x.
Patch attached. All tests pass.
keywords: needs review, patch
nosy: amaury.forgeotdarc, benjamin.peterson
priority: release blocker
stage: patch review
title: A binary file should show "b" in its mode
versions: Python 3.0
Added file: http://bugs.python.org/file12104/fileio_mode.patch
Python tracker <report at bugs.python.org>
More information about the Python-bugs-list