En Mon, 27 Jul 2009 17:53:12 -0300, Dave Angel <da...@ieee.org> escribió:
Piotrek wrote:

I write a Python program. It will contain some images (in .png format), some audio files (as .ogg) etc. Now I think where should my installer put these files and how should I access them. What is the normal Python way of doing
that? I think about puting these files in /usr/share/myprogram and then
reading it the normal way (so the path "/usr/share/myprogram" would be just
hardwired in my program). Is it the way one usually does it in Python
program or is there any more sofisticated way?


My answer is to put read-only files right with the py* files, and writable files in the user's space. In the former case, you can find the files by parsing __file__ for one of your modules. In the latter case, it's system dependent.

For those read-only resources I'd use pkgutil.get_data (instead of
manually parsing __file__):

http://docs.python.org/library/pkgutil.html#pkgutil.get_data

It's easier to manage when someone later decide to install the package as
an egg file, or distribute it using py2exe. Quoting the documentation:

"""The function returns a binary string that is the contents of the
specified resource.

For packages located in the filesystem, which have already been imported,
this is the rough equivalent of:

d = os.path.dirname(sys.modules[package].__file__)
data = open(os.path.join(d, resource), 'rb').read()
return data
"""

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to