#!/usr/bin/env python # # $Id: simpleconf.py,v 1.2 2007/09/03 13:34:03 imil Exp $ # # -*- coding: latin1 -*- import re import sys import os class SimpleConf: '''very basic conf file objectizer''' confline = '^\s*(\S+?)([\t\ =:]+)(\S.+)' def __init__(self): self.ordfile = [] self.fdict = {} self.separator = '' def ordict(self): for l in self.ordfile: self.fdict[l.keys()[0]] = l.values()[0] def keys(self): return self.fdict.keys() def values(self): return self.fdict.values() def valueupdate(self, key, value): if not key in self.fdict.keys(): return None for l in self.ordfile: k = l.keys()[0] if key == k: l[k] = value + '\n' # update fake dict, yeah, that sucks self.ordict() def read(self, path): if not os.path.isfile(path): print path + ' is not a file' return None f = open(path, "r") for line in f.readlines(): if line[0] in ['#', '\n', '\0']: self.ordfile.append({line: ''}) continue m = re.match(self.confline, line) if m: (key, self.separator, value) = m.groups() self.ordfile.append({key: value + '\n'}) f.close() # update fake dict self.ordict() return self.fdict def write(self, filename): f = open(filename, "w") for l in self.ordfile: k = l.keys()[0] if l[k] == '': f.write(k) else: f.write(k + self.separator + l[k]) f.close() def basic_test(file): cf = SimpleConf() kv = cf.read(file) for k in kv.keys(): print 'key: ' + k + ', value: ' + kv[k] cf.write('/tmp/out.tmp') if __name__ == "__main__": if (len(sys.argv) < 2): sys.exit(2) basic_test(sys.argv[1])