So far we've looked at text files, where we deal with the file contents as Unicode strings. There are many cases, however, where files contain data that is not encoded text. In these situations we need to be able to work with the exact bytes that are present in the file, without any intermediate encoding or decoding. This is what binary mode is for.
To demonstrate handling of binary files, we need an interesting binary data format. BMP is an image file format that contains Device Independent Bitmaps. It's simple enough that we can make a BMP file writer from scratch. Place the following code in a module called bmp.py
:
# bmp.py """A module for dealing with BMP bitmap image files.""" def write_grayscale(filename, pixels): """Creates and writes a grayscale BMP file. Args: filename: The name of the BMP file to me created. pixels: A rectangular image stored as a sequence of rows. Each row must be an iterable series of...