embedding resources in python scripts
Question: I'd like to figure out how to embed binary content in a python script. For
instance, I don't want to have any external files around (images, sound, ...
), I want all this content living inside of my python scripts.

Little example to clarify, let's say I got this small snippet:

    
    
    from StringIO import StringIO
    from PIL import Image, ImageFilter
    
    embedded_resource = StringIO(open("Lenna.png", "rb").read())
    im = Image.open(embedded_resource)
    im.show()
    
    im_sharp = im.filter(ImageFilter.SHARPEN)
    im_sharp.show()
    

As you can see, the example is reading the external file 'Lenna.png'

[![enter image description
here](http://i.stack.imgur.com/3p4GL.png)](http://i.stack.imgur.com/3p4GL.png)

**Question**

How to proceed to embed "Lenna.png" as a resource (variable) into my python
script. What's the fastest way to achieve this simple task using python?


Answer: The best way to go about this is converting your picture into a python string,
and have it in a separate file called something like `resources.py`, then you
simply parse it.

If you are looking to embed the whole thing inside a single binary, then
you're looking at something like [py2exe](http://py2exe.org/).
[Here](http://www.py2exe.org/index.cgi/data_files) is an example embedding
external files

In the first scenario, you could even use `base64` to (de)code the picture,
something like this:

    
    
    import base64
    file = open('yourImage.png'); 
    encoded = base64.b64encode(file.read())
    data = base64.b64decode(encoded) # Don't forget to file.close() !
    

