Previous Page
Next Page

22.1. Encoding Binary Data as Text

Several kinds of media (e.g., email messages) contain only text. When you want to transmit arbitrary binary data via such media, you need to encode the data as text strings. The Python standard library supplies modules that support the standard encodings known as Base 64, Quoted Printable, and UU.

22.1.1. The base64 Module

The base64 module supports the encoding specified in RFC 1521 as Base 64. The Base 64 encoding is a compact way to represent arbitrary binary data as text, without any attempt to produce human-readable results. Module base64 supplies four functions.

decode

decode(infile,outfile)

Reads text-file-like object infile by calling infile.readline until end of file (i.e., until a call to infile.readline returns an empty string), decodes the Base 64-encoded text thus read, and writes the decoded data to binary-file-like object outfile.

decodestring

decodestring(s)

Decodes text string s, which contains one or more complete lines of Base 64-encoded text, and returns the byte string with the corresponding decoded data.

encode

encode(infile,outfile)

Reads binary-file-like object infile by calling infile.read (for 57 bytes at a time, which is the amount of data that Base 64 encodes into 76 characters in each output line) until end of file (i.e., until a call to infile.read returns an empty string). It encodes the data thus read in Base 64, and writes the encoded text, one line at a time, to text-file-like object outfile, appending \n to each line of text it emits, including the last one.

encodestring

encodestring(s)

Encodes binary string s, which contains arbitrary bytes, and returns a text string with one or more complete lines of Base 64-encoded data joined by newline characters (\n). encodestring always returns a text string that ends with \n.


22.1.2. The quopri Module

The quopri module supports the encoding specified in RFC 1521 as Quoted Printable (QP). QP can represent any binary data as text, but it's mainly intended for data that is textual, with a modest amount of characters with the high bit set (i.e., characters outside the ASCII range). For such data, QP produces results that are both compact and human-readable. Module quopri supplies four functions.

decode

decode(infile,outfile,header=False)

Reads file-like object infile by calling infile.readline until end of file (i.e., until a call to infile.readline returns an empty string), decodes the QP-encoded ASCII text thus read, and writes the decoded data to file-like object outfile. When header is true, decode also decodes _ (underscores) into spaces.

decodestring

decodestring(s,header=False)

Decodes string s, which contains QP-encoded ASCII text, and returns the byte string with the decoded data. When header is true, decodestring also decodes _ (underscores) into spaces.

encode

encode(infile,outfile,quotetabs,header=False)

Reads file-like object infile by calling infile.readline until end of file (i.e., until a call to infile.readline returns an empty string), encodes the data thus read in QP, and writes the encoded ASCII text to file-like object outfile. When quotetabs is true, encode also encodes spaces and tabs. When header is true, encode encodes spaces as _ (underscores).

encodestring

encodestring(s,quotetabs =False,header=False)

Encodes string s, which contains arbitrary bytes, and returns a string with QP-encoded ASCII text. When quotetabs is true, encodestring also encodes spaces and tabs. When header is true, encodestring encodes spaces as _ (underscores).


22.1.3. The uu Module

The uu module supports the traditional Unix-to-Unix (UU) encoding, as implemented by Unix programs uuencode and uudecode. UU begins encoded data with a begin line, which also gives the filename and permissions of the file being encoded, and ends it with an end line. Therefore, UU encoding lets you embed encoded data in otherwise unstructured text, while Base 64 encoding relies on the existence of other indications of where the encoded data starts and finishes. Module uu supplies two functions.

decode

decode(infile,outfile=None,mode=None)

Reads file-like object infile by calling infile.readline until end of file (i.e., until a call to infile.readline returns an empty string) or until a terminator line (the string 'end' surrounded by any amount of whitespace). decode decodes the UU-encoded text thus read and writes the decoded data to file-like object outfile. When outfile is None, decode creates the file specified in the UU-format begin line, with the permission bits given by mode (the permission bits specified in the begin line when mode is None). In this case, decode raises an exception if the file already exists.

encode

encode(infile,outfile,name='-',mode=0666)

Reads file-like object infile by calling infile.read (for 45 bytes at a time, which is the amount of data that UU encodes into 60 characters in each output line) until end of file (i.e, until a call to infile.read returns an empty string). It encodes the data thus read in UU and writes the encoded text to file-like object outfile. encode also writes a UU begin line before the encoded text and a UU end line after the encoded text. In the begin line, encode specifies the filename as name and the mode as mode.



Previous Page
Next Page