4.12 The
|
4.13 The
|
4.14 The uu ModuleThe uu encoding scheme is used to convert arbitrary binary data to plain text. This format is quite popular on the Usenet, but is slowly being superseded by base64 encoding.
A
uu
encoder takes groups of three bytes (24 bits) and converts each
An encoded data stream starts with a begin line, which includes the file privileges (the Unix mode field as an octal number) and the filename, and ends with an end line: begin 666 sample.jpg M_]C_X 02D9)1@ ! 0 0 ! #_VP!# @&!@<&!0@'!P<)'0@*#!0-# L+ ...more lines like this... end The uu module provides two functions: encode and decode .
The
encode(infile
,
outfile
,
filename)
function, shown in Example 4-24, encodes data from the input file and
Example 4-24. Using the uu Module to Encode a Binary File
File: uu-example-1.py
import uu
import os, sys
infile = "samples/sample.jpg"
uu.encode(infile, sys.stdout, os.path.basename(infile))
begin 666 sample.jpg
M_]C_X 02D9)1@ ! 0 0 ! #_VP!# @&!@<&!0@'!P<)"0@*#!0-# L+
M#!D2$P'1H?'AT:'!P@)"XG("(L(QP<*#<I+# Q-#0T'R<Y/3@R/"XS-#+_
MVP!# 0D)"0P+#!@-#1@R(1PA,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C(R
M,C(R,C(R,C(R,C(R,C(R,C(R,C(R,C+_P 1" " ( # 2( A$! Q$!_
The decode(infile , outfile) function, shown in Example 4-25, decodes uu -encoded data from the input text file and writes it to the output file. Again, both arguments can be either filenames or file objects. Example 4-25. Using the uu Module to Decode a uu-Encoded File
File: uu-example-2.py
import uu
import StringIO
infile = "samples/sample.uue"
outfile = "samples/sample.jpg"
#
# decode
fi = open(infile)
fo = StringIO.StringIO()
uu.decode(fi, fo)
#
# compare with original data file
data = open(outfile, "rb").read()
if fo.getvalue() == data:
print len(data), "bytes ok"
|