By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,814 Members | 1,050 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,814 IT Pros & Developers. It's quick & easy.

Is there a Python library that packs binary data into one file?

P: n/a
Hello all,

Today I began writing a utility script that takes given binary files
and puts them all into one datafile. My idea is to be able to access
any binary data I want by indexing the datafile, e.g.
wanted_image_data = datafileobj[IMAGE_DATA]. The purpose is to hide
external image files from the user in a simple game I'm writing.

Though I have a good idea of how to implement this, before I begin I
am curious to know if some Python master out there has already come
out with a library that does the same. Anyone? :)
Jul 18 '05 #1
Share this Question
Share on Google+
5 Replies


P: n/a
zipfile.py works pretty well and you get compression
as well.

Larry Bates
Syscon, Inc.

"Jacob H" <ja********@postmark.net> wrote in message
news:85**************************@posting.google.c om...
Hello all,

Today I began writing a utility script that takes given binary files
and puts them all into one datafile. My idea is to be able to access
any binary data I want by indexing the datafile, e.g.
wanted_image_data = datafileobj[IMAGE_DATA]. The purpose is to hide
external image files from the user in a simple game I'm writing.

Though I have a good idea of how to implement this, before I begin I
am curious to know if some Python master out there has already come
out with a library that does the same. Anyone? :)

Jul 18 '05 #2

P: n/a
>>>>> "Jacob" == Jacob H <ja********@postmark.net> writes:

Jacob> Hello all, Today I began writing a utility script that
Jacob> takes given binary files and puts them all into one
Jacob> datafile. My idea is to be able to access any binary data I
Jacob> want by indexing the datafile, e.g. wanted_image_data =
Jacob> datafileobj[IMAGE_DATA]. The purpose is to hide external
Jacob> image files from the user in a simple game I'm writing.

Jacob> Though I have a good idea of how to implement this, before
Jacob> I begin I am curious to know if some Python master out
Jacob> there has already come out with a library that does the
Jacob> same. Anyone? :) --

How about putting it into a tar file? There are many archive file
formats (ISO9960, tar, zip). You could just reuse one of these and an
existing python interface to them, compressing and encrypting as
necessary if you need extra obscurity.

JDH
Jul 18 '05 #3

P: n/a
Jacob H wrote:
Hello all,

Today I began writing a utility script that takes given binary files
and puts them all into one datafile. My idea is to be able to access
any binary data I want by indexing the datafile, e.g.
wanted_image_data = datafileobj[IMAGE_DATA]. The purpose is to hide
external image files from the user in a simple game I'm writing.

What you need, is a simple pickle of a dictionary save to disk.

It's dead easy, and does exactly what you want.

import cPickle

some_dict = {'my':'name','is':'norman','bates':'!'}
file_name = 'some.dict'

f = open(file_name, 'wb')
cPickle.dump(some_dict, f, -1)
f.close()

f = open(file_name, 'rb')
c = cPickle.load(f)
f.close()

print c
{'my': 'name', 'is': 'norman', 'bates': '!'}

"
3.14 pickle -- Python object serialization

The pickle module implements a fundamental, but powerful algorithm for
serializing and de-serializing a Python object structure. ``Pickling''
is the process whereby a Python object hierarchy is converted into a
byte stream, and ``unpickling'' is the inverse operation, whereby a byte
stream is converted back into an object hierarchy. Pickling (and
unpickling) is alternatively known as ``serialization'',
``marshalling,''3.2 or ``flattening'', however, to avoid confusion, the
terms used here are ``pickling'' and ``unpickling''.

This documentation describes both the pickle module and the cPickle module.
"

regards Max M
Jul 18 '05 #4

P: n/a
Jacob H wrote:
Hello all,

Today I began writing a utility script that takes given binary files
and puts them all into one datafile. My idea is to be able to access
any binary data I want by indexing the datafile, e.g.
wanted_image_data = datafileobj[IMAGE_DATA]. The purpose is to hide
external image files from the user in a simple game I'm writing.

Though I have a good idea of how to implement this, before I begin I
am curious to know if some Python master out there has already come
out with a library that does the same. Anyone? :)

Not quite what you're asking for, but ResourcePackage embeds resources
automatically in Python files. If you are py2exe'ing your projects the
result is that the images are invisible (they are part of the Python
bytecode files py2exe packs into the exe). The nice part is the
automation; you just update the data-file (stored in a sub-package of
your main game package) and the embedded version is automagically
updated on next import of the resource package (run of the game).

http://resourcepackage.sf.net/

Have fun,
Mike

_______________________________________
Mike C. Fletcher
Designer, VR Plumber, Coder
http://members.rogers.com/mcfletch/

Jul 18 '05 #5

P: n/a
Jacob H wrote:
Hello all,

Today I began writing a utility script that takes given binary files
and puts them all into one datafile. My idea is to be able to access
any binary data I want by indexing the datafile, e.g.
wanted_image_data = datafileobj[IMAGE_DATA]. The purpose is to hide
external image files from the user in a simple game I'm writing.


In the vein of giving a man a fish: if you are using python 2.2+

import dbhash, zlib

db = dbhash.open("foo.db", 'w')

db['hi'] = zlib.compress("my dog has fleas")
print zlib.decompress(db['hi'])

for more help
type

help(dbhash)

at the interpreter

In the vein of teaching a man to fish, read the library reference here
for a lot of python goodies:

http://python.org/doc/2.3.3/lib/

Brian
Jul 18 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.