What is the difference between rb and r+b modes in file objects

Iamcool picture Iamcool · Apr 1, 2013 · Viewed 139.3k times · Source

I am using pickle module in Python and trying different file IO modes:

# works on windows.. "rb"
with open(pickle_f, 'rb') as fhand:
        obj = pickle.load(fhand)

# works on linux.. "r"
with open(pickle_f, 'r') as fhand:
        obj = pickle.load(fhand)

# works on both "r+b"
with open(pickle_f, 'r+b') as fhand:
        obj = pickle.load(fhand)

I never read about "r+b" mode anywhere, but found mentioning about it in the documentation.

I am getting EOFError on Linux if I use "rb" mode and on Windows if "r" is used. I just gave "r+b" mode a shot and it's working on both.

What's "r+b" mode? What's the difference between "rb" and "r+b"? Why does it work when the others don't?

Answer

karthikr picture karthikr · Apr 1, 2013

r+ is used for reading, and writing mode. b is for binary. r+b mode is open the binary file in read or write mode.
You can read more here.