When None (default), returns a file-like object with a
read method that on Python 2.x returns bytes objects and
on Python 3.x returns str (unicode) objects, using
locale.getpreferredencoding() as an encoding. This matches
the default behavior of the built-in open when no mode
argument is provided.
When 'binary', returns a file-like object where its read
method returns bytes objects.
When another string, it is the name of an encoding, and the
file-like object’s read method will return str (unicode)
objects, decoded from binary using the given encoding.