codecs.open(filename, mode[, encoding[, errors[, buffering]]])
Open an encoded file using the given mode and return a wrapped version
providing transparent encoding/decoding. The default file mode is 'r'
meaning to open the file in read mode.
Note The wrapped version will only accept the object format defined by
the codecs, i.e. Unicode objects for most built-in codecs. Output is
also codec-dependent and will usually be Unicode as well. Note Files
are always opened in binary mode, even if no binary mode was specified. This is done to avoid data loss due to encodings using
8-bit values. This means that no automatic conversion of 'n' is done
on reading and writing. encoding specifies the encoding which is to be
used for the file.
errors may be given to define the error handling. It defaults to
'strict' which causes a ValueError to be raised in case an encoding
error occurs.
buffering has the same meaning as for the built-in open() function. It
defaults to line buffered.