reading raw variables from file

MonkeeSage MonkeeSage at gmail.com
Sat Dec 1 00:55:49 EST 2007


On Nov 30, 10:05 am, "Martin Blume" <mbl... at socha.net> wrote:
> "Bruno Desthuilliers"  schrieb
>
>
>
> > >> I have a file that might contain literal python
> > >> variable statements at every line. For example
> > >> the file info.dat looks like this:
> > >> users = ["Bob", "Jane"]
> > >> status = {1:"ok",2:users[0]}
> > >> the problem is I want to read this file and load
> > >> whatever variables written in it as normal python
> > >> variable statements so that when i read the file,
> > >> my users var will be ["Bob","Jane"] and my status
> > >> var will be {1:"ok",2:users[0]} .
> > >> Is there an easy way of doing this instead of
> > >> parsing the files and checking said types?
>
> > > You might want to look at the eval, exec and execfile;
>
> > Or just import...
>
> > > but bear in in mind Paddy's warning about security.
>
> > +10
>
> If I have understood python naming scoping correctly,
> doing
>    my_var="hello"
>    import stuff
>    print my_var
> is not the same as
>    my_var="hello"
>    exec open("stuff.py").read()
>    print my_var
> with stuff.py containing
>    my_var="bye"

It's not the same...

from stuff import *

...is.

> I use this exec open("stuff.py").read() mechanism to set
> values in my scripts: the script sets a useful default,
> a command-line argument in the form a valid python program
> may override it. Why bother with inventing or using another
> mechanism when this is perfectly simple, easy and self-explaining?
>
> The one and only thing against it is that a malicious user
> can sneak in an os.system("cd / && rm -rf *").
>
> IMHO. YMMV.
> Martin

Regards,
Jordan



More information about the Python-list mailing list