parameter files

R

Russ

I have a python module (file) that has a set of parameters associated
with it. Let's say the module is called "code.py." I would like to keep
the parameter assignments in a separate file so that I can save a copy
for each "run" without having to save the entire code.py file. Let's
say the parameter file is called "parameters.py."

Normally, code.py would simply import the parameters.py file. However,
I don't want the parameters to be accessible to any other file that
imports the code.py file. to prevent such access, I preface the name of
each parameter with an underscore. But then the parameters aren't even
visible in code.py! So I decided to use "execfile" instead of import so
the parameters are visible.

That solved the problem, but I am just wondering if there is a better
and/or more standard way to handle a situation like this. Any
suggestions? Thanks.
 
G

gry

Russ said:
I have a python module (file) that has a set of parameters associated
with it. Let's say the module is called "code.py." I would like to keep
the parameter assignments in a separate file so that I can save a copy
for each "run" without having to save the entire code.py file. Let's
say the parameter file is called "parameters.py."

Normally, code.py would simply import the parameters.py file. However,
I don't want the parameters to be accessible to any other file that
imports the code.py file. to prevent such access, I preface the name of
each parameter with an underscore. But then the parameters aren't even
visible in code.py! So I decided to use "execfile" instead of import so
the parameters are visible.

That solved the problem, but I am just wondering if there is a better
and/or more standard way to handle a situation like this. Any
suggestions? Thanks.

I would try a configuration file, instead of a python module.
See ConfigParser:
<http://docs.python.org/lib/module-ConfigParser.html>.
You can save values for each "run" in a separate [section].
Execfile is a pretty big hammer for this.

-- George
 
G

Gabriel Genellina

I would try a configuration file, instead of a python module.
See ConfigParser:
<http://docs.python.org/lib/module-ConfigParser.html>.
You can save values for each "run" in a separate [section].
Execfile is a pretty big hammer for this.

Hey, that looks interesting, but those docs don't do it for me. Can you
point me to some more extensive examples of how to use ConfigParser?

Just forget about interpolation and such; declare a section for each
run in your config file:

[run_name_one]
a=123
b=Test
c=4.0

[run_two]
a=456
b=Whatever
c=0.1

config = ConfigParser.ConfigParser()
config.read(filename)
a = config.getint('run_two','a') # a==456
b = config.get('run_name_one','b') # b=='Test'
section = 'run_two'
c = config.getfloat(section,'c') # c==0.1


Gabriel Genellina
Softlab SRL





__________________________________________________
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
¡Probalo ya!
http://www.yahoo.com.ar/respuestas
 
R

Russ

Thanks for the examples.

I don't think you understood what I meant by a "run." All I meant is
that I want to save the configuration, for reference purposes, that was
used for a particular run. That way I can reproduce the results if
necessary, and I can avoid confusion about which parameters were used
to get particular results.

I don't need a section for each run. I only need one set of parameters.
I suppose I could use the sections for different modules or classes,
each of which needs its own parameters.


Gabriel said:
I would try a configuration file, instead of a python module.
See ConfigParser:
<http://docs.python.org/lib/module-ConfigParser.html>.
You can save values for each "run" in a separate [section].
Execfile is a pretty big hammer for this.

Hey, that looks interesting, but those docs don't do it for me. Can you
point me to some more extensive examples of how to use ConfigParser?

Just forget about interpolation and such; declare a section for each
run in your config file:

[run_name_one]
a=123
b=Test
c=4.0

[run_two]
a=456
b=Whatever
c=0.1

config = ConfigParser.ConfigParser()
config.read(filename)
a = config.getint('run_two','a') # a==456
b = config.get('run_name_one','b') # b=='Test'
section = 'run_two'
c = config.getfloat(section,'c') # c==0.1


Gabriel Genellina
Softlab SRL





__________________________________________________
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
¡Probalo ya!
http://www.yahoo.com.ar/respuestas
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,055
Latest member
SlimSparkKetoACVReview

Latest Threads

Top