Difference between parsing a text file in r and rb mode

This depends a little bit on what version of Python you’re using. In Python 2, Chris Drappier’s answer applies.

In Python 3, its a different (and more consistent) story: in text mode ('r'), Python will parse the file according to the text encoding you give it (or, if you don’t give one, a platform-dependent default), and read() will give you a str. In binary ('rb') mode, Python does not assume that the file contains things that can reasonably be parsed as characters, and read() gives you a bytes object.

Also, in Python 3, the universal newlines (the translating between '\n' and platform-specific newline conventions so you don’t have to care about them) is available for text-mode files on any platform, not just Windows.

Leave a Comment