Is it possible to store data in a Python file in a way similar to Ruby's __END__ section?

Stephen Hansen apt.shansen at gmail.invalid
Fri Apr 2 22:52:25 CEST 2010


On 2010-04-02 13:08:00 -0700, Christopher Roach said:

> I have a script that I am working on to process a bunch of data. A
> good portion of the Tk-based GUI is driven by a large set of YAML data
> and I'd love to store that data inside of the script so that I can
> send just a single file to my colleague. Ruby has a mechanism for
> doing this whereby I can load the data by doing a YAML.load(DATA)
> which loads everything in the file after the __END__ keyword (for a
> better explanation of this see http://bit.ly/V9w8m). I was wondering
> if anyone knew of a way to do something similar in Python?

If its just like a YAML file or such, the idiomatic thing to do is just 
use a triple-quoted string, I think.

Such as:

DATA="""
My stuff
and stuff
and more stuff
and other stuff"""

If you're wanting to include binary stuff like images, that gets more 
complicated. I've seen it done a couple different ways, but usually 
storing as above but base64 encoding the strings first.

Anything more, and its usually time to start packaging the thing wiht 
py2exe or similar things :)

Now, one concern you may have is order-- you may not want this stuff on 
top of your script, but instead on the bottom so its sort of 'out of 
the way'. For that, I'd do like:

import YAML

def random_thing(arg):
    return arg + 1

def main():
    config = YAML.load(DATA)

# Code ends

DATA="""
blah blah
blah"""

# Bootstrap

if __name__ == "__main__":
    main()

-- 
--S

... p.s: change the ".invalid" to ".com" in email address to reply privately.




More information about the Python-list mailing list