# 12.12 `base64` -- Encode and decode MIME base64 data

This module performs base64 encoding and decoding of arbitrary binary strings into text strings that can be safely sent by email or included as part of an HTTP POST request. The encoding scheme is defined in RFC 1521 (MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies, section 5.2, ``Base64 Content-Transfer-Encoding'') and is used for MIME email and various other Internet-related applications; it is not the same as the output produced by the uuencode program. For example, the string `'www.python.org'` is encoded as the string `'d3d3LnB5dGhvbi5vcmc=\n'`.

`decode`(input, output)
  Decode the contents of the input file and write the resulting binary data to the output file. input and output must either be file objects or objects that mimic the file object interface. input will be read until `input.read()` returns an empty string.

`decodestring`(s)
  Decode the string s, which must contain one or more lines of base64 encoded data, and return a string containing the resulting binary data.

`encode`(input, output)
  Encode the contents of the input file and write the resulting base64 encoded data to the output file. input and output must either be file objects or objects that mimic the file object interface. input will be read until `input.read()` returns an empty string. If the last input character is not a newline (`'\n'`), a newline will be added to the input data.

`encodestring`(s)
  Encode the string s, which can contain arbitrary binary data, and return a string containing one or more lines of base64-encoded data. If the last character of s is not a newline (`'\n'`), a newline will be added. This causes `encodestring('hello!')` to return the same value as `encodestring('hello!\n')`.

See Also:

Module `binascii`:
  Support module containing ASCII-to-binary and binary-to-ASCII conversions.

RFC 1521, MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies
  Section 5.2, ``Base64 Content-Transfer-Encoding,'' provides the definition of the base64 encoding.