[Python-Dev] IO module precisions and exception hierarchy

MRAB python at mrabarnett.plus.com
Sun Sep 27 17:14:35 CEST 2009


Pascal Chambon wrote:
 > Found in current io PEP :
 > Q: Do we want to mandate in the specification that switching between
 > reading and writing on a read-write object implies a .flush()? Or is
 > that an implementation convenience that users should not rely on?
 > -> it seems that the only important matter is : file pointer
 > positions and bytes/characters read should always be the ones that
 > the user expects, as if there were no buffering. So flushing or not
 > may stay a non-mandatory behaviour, as long as the buffered streams
 > ensures this data integrity. Eg. If a user opens a file in r/w mode,
 > writes two bytes in it (which stay buffered), and then reads 2 bytes,
 > the two bytes read should be those on range [2:4] of course, even
 > though the file pointer would, due to python buffering, still be at
 > index 0.
 >
+1
 >
 > Q from me : What happens in read/write text files, when overwriting a
 > three-bytes character with a single-byte character ? Or at the
 > contrary, when a single chinese character overrides 3 ASCII characters
 > in an UTF8 file ? Is there any system designed to avoid this data
 > corruption ? Or should TextIO classes forbid read+write streams ?
 >
If the characters are always the same number of bytes) then overwriting
could be possible; that would, however, make the behaviour more
complicated (sometimes you can, sometimes you can't), so it's probably
just simpler to forbid read+write text streams.



More information about the Python-Dev mailing list