Including binary files in a .py file; advice needed

Joe Francia usenet at soraia.com
Thu Jun 5 05:53:05 CEST 2003


Gary Duncan wrote:

> 
> Here's what I want to do; distribute a .py file (a GUI app) with
> an embedded (binary) .GIF file (a photo of me at 1 yo ;) rather than
> distribute both separately. For convenience, mainly.
> 
> 
> If in a Unix shell script, I'd uuencode the .GIF and include the 
> printable-ASCII file in it as a 'here' file. When executed the script
> would 'cat' it out to e.g. a /tmp file from the main body of the script, 
> then uudecode the /tmp file to revert to the original .GIF file.
> 
> I imagine in Python, one could place the uuencoded file (lines)
> as a triple-quoted string, then uudecode it the .py program.
> 

You can use the uu module, though I'd suggest the base64 instead, as it 
can decode a string directly (uu requires a file-like object), and tends 
to produce somewhat smaller strings.

############

#careful not to include a leading newline in b64 string
ENCODED_GIF = \
'''R0lGODlhcwCKAPf/AJNtWolhToNdS7OEbGxLPbOMcraimHRTQ6iclkc4NntTQ725tnFiXFlJRb2o
m5x5ZUEuKod5dpt1YotkUqZzXVtCN6t9Zb2Se5ptWpiJiKyKdJOIer6bhMbGxlM2LoV0bToqJ3NL
blah blah etc...
'''

import base64
out_gif = file('/home/scaba/littleman.gif', 'wb')
out_gif.write(base64.decodestring(ENCODED_GIF))
out_gif.close()

#############

jf





More information about the Python-list mailing list