reading raw variables from file
Martin Blume
mblume at socha.net
Fri Nov 30 11:05:16 EST 2007
"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"
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
More information about the Python-list
mailing list