473,396 Members | 1,755 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

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? :)
Jul 18 '05 #1
5 1900
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
>>>>> "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
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
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
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 thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

10
by: Andrew Dalke | last post by:
Is there an author index for the new version of the Python cookbook? As a contributor I got my comp version delivered today and my ego wanted some gratification. I couldn't find my entries. ...
2
by: ajikoe | last post by:
Hi, I tried to follow the example in swig homepage. I found error which I don't understand. I use bcc32, I already include directory where my python.h exist in bcc32.cfg. /* File : example.c...
4
by: Arnaud Delobelle | last post by:
Hi fellow python enthusiasts. Having recently acquired a MacBook Pro (Intel Core 2 Duo) which comes with python2.5, I have been installing some modules that I need (PIL, psycopg2, PyXML ...). ...
20
by: Mr.SpOOn | last post by:
Hi, I need a structure to represent a set of integers. I also need to perform on this set some basic set operations, such as adding or removing elements, joining with other sets and checking for...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.