Kim Besson wrote: > Hi Glynn and rest of the list > I have tested this method by creating a config.py and a demo-example of > config and I'm not being able to use this solution. Maybe I'm not fully > understanding it (never used classes in Python): > 1- I create a config1.py file in a working Python directory > 2- I added this to config.py > class Params(object): > def __init__(self, filename): > params = Params("config.cfg") > 3- My config.cfg has the following: > Ah= '1' > Bu= '2' > > 4- Just for testing, in a Python Shell I do: > from config1 import Params > (WORK) > Then: > >>> print Params > I get: <class 'config1.Params'> > So I cannot access variables inside config.cfg > What am I doing wrong?
First, Params.__init__ needs to actually read the specified file. E.g.:
import grass.script as grass class Params(object): def __init__(self, filename): f = open(filename, 'r') s = f.read() f.close() self.params = grass.parse_key_val(s) def __getattr__(self, name): return self.params[name] def __getitem__(self, name): return self.params[name] def __repr__(self): return repr(self.params) # read the config file params = Params("config.cfg")
This assumes that the config.cfg file uses variable=value syntax. The resulting config.params object allows the parameters to be accessed as object attributes (e.g.: config.params.something) or dictionary entries (e.g.: config.params['something']). The Python standard library has the ConfigParser module if you want more complex functionality: http://docs.python.org/library/configparser.html -- Glynn Clements <gl...@gclements.plus.com>
_______________________________________________ grass-user mailing list grass-user@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/grass-user