Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Python (http://www.velocityreviews.com/forums/f43-python.html)
-   -   Is there a Python library that packs binary data into one file? (http://www.velocityreviews.com/forums/t330286-is-there-a-python-library-that-packs-binary-data-into-one-file.html)

Jacob H 04-26-2004 09:01 PM

Is there a Python library that packs binary data into one file?
 
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? :)

John Hunter 04-26-2004 09:27 PM

Re: Is there a Python library that packs binary data into one file?
 
>>>>> "Jacob" == Jacob H <jacobsmail@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



Larry Bates 04-26-2004 09:46 PM

Re: Is there a Python library that packs binary data into one file?
 
zipfile.py works pretty well and you get compression
as well.

Larry Bates
Syscon, Inc.

"Jacob H" <jacobsmail@postmark.net> wrote in message
news:85b54e91.0404261301.69d5c1e9@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? :)




Max M 04-26-2004 10:22 PM

Re: Is there a Python library that packs binary data into one file?
 
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

Mike C. Fletcher 04-26-2004 10:44 PM

Re: Is there a Python library that packs binary data into one file?
 
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/




Brian Kelley 04-27-2004 02:08 PM

Re: Is there a Python library that packs binary data into one file?
 
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

Jerry McBride 05-04-2004 01:58 AM

Re: Is there a Python library that packs binary data into one file?
 
Larry Bates wrote:

> zipfile.py works pretty well and you get compression
> as well.
>


If you're after better compression there's also bzip2...


--

************************************************** ****************************
Registered Linux User Number 185956
http://groups.google.com/groups?hl=e...ff&group=linux
Join me in chat at #linux-users on irc.freenode.net
Buy an Xbox for $149.00, run linux on it and Microsoft loses $150.00!
9:22pm up 14 days, 43 min, 5 users, load average: 3.05, 3.06, 2.99




All times are GMT. The time now is 04:41 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.