1from ConfigParser import SafeConfigParser 2 3class Configuration: 4 def __init__(self, fileName): 5 cp = SafeConfigParser() 6 cp.read(fileName) 7 self.__parser = cp 8 self.fileName = fileName 9 10 def __getattr__(self, name): 11 if name in self.__parser.sections(): 12 return Section(name, self.__parser) 13 else: 14 return None 15 16 def __str__(self): 17 p = self.__parser 18 result = [] 19 result.append('<Configuration from %s>' % self.fileName) 20 for s in p.sections(): 21 result.append('[%s]' % s) 22 for o in p.options(s): 23 result.append('%s=%s' % (o, p.get(s, o))) 24 return '\n'.join(result) 25 26class Section: 27 def __init__(self, name, parser): 28 self.name = name 29 self.__parser = parser 30 31 def __getattr__(self, name): 32 return self.__parser.get(self.name, name) 33 34 def __str__(self): 35 return str(self.__repr__()) 36 37 def __repr__(self): 38 return self.__parser.items(self.name) 39 40 def getboolean(self, name): 41 return self.__parser.getboolean(self.name, name) 42 43 def __contains__(self, name): 44 return self.__parser.has_option(self.name, name) 45 46 def get(self, name, default): 47 if name in self: 48 return self.__getattr__(name) 49 else: 50 return default 51 52 def set(self, name, value): 53 self.__parser.set(self.name, name, str(value)) 54 55# Test 56if __name__ == '__main__': 57 c = Configuration('Importador.ini') 58 print c.Origem.host, c.Origem.port 59