def _prepareUserInfo(user_prefix=_user_prefix, user_range=_user_range, mail_postfix=_mail_postfix, password=_password): res = [] for i in user_range: d = MyDict() d.nickname = "%s%05d" % (user_prefix, i) d.username = "******" % (user_prefix, i, mail_postfix) d.email = "%s%05d%s" % (user_prefix, i, mail_postfix) d.password = password res.append(d) return res
class Tree: branches=MyDict() def __init__(self,root): self.root=root self.branches[self.root]=root.getTag()+"_"+str(root.num_children()) #self.add_branches(root) def treeTraversal(self,traverse="search",printing=False): #count=0 if traverse=="search": pass def printTree(self): #doing this #print self.getRoot(True) for k,v in self.branches.iteritems(): if k.is_root(): print v for i in range(k.num_children()): print "|" print "--"+str(i) def printSubTree(self,node="root"): if node in Node.NodeIndex.keys(): print "I am new branch" print node print "My children are" for i in Node.NodeIndex[node].get_child(): print i.getTag() if len(Node.NodeIndex[node].get_child())==0: print "No children" def getRoot(self,tag=False): if tag: return self.root.getTag() else: return self.root def add_branches(self,parent): def addit(parent): for i in parent.get_child(): self.branches[i]=i.getTag()+"_"+str(i.num_children()) if not isinstance(parent, Node): return if parent.has_children(): addit(parent) for i in parent.get_child(): if isinstance(i, Node): if i.has_children(): addit(i) else: self.add_branches(i) else: self.branches[parent]=parent.getTag()+"_"+str(parent.num_children()) def addMyBranches(self,parent): if not isinstance(parent,Node): return if parent.has_children(): for i in parent.get_child(): self.branches[i]=i.getTag()+"_"+str(i.num_children()) else: self.branches[parent]=parent.getTag()+"_"+str(parent.num_children())
def _readConfig(self): """Load App configuration""" if self._configFile!=None: self._config = XMLParser() self._config.readfile(self._configFile) for section in self._config.xsd7config[0].xsection: for option in section.xoption: if not self._options.has_key(section.pname): self._options[section.pname] = MyDict() self._options[section.pname][option.pname] = option.pvalue self._setConfigDefaults()
def isSuperSet(A, B): d1 = MyDict() d2 = MyDict() for a in A: d1[a] = d1.get(a, 0) + 1 for b in B: d2[b] = d2.get(b, 0) + 1 for key in d2.keys(): if d2[key] > d1.get(key, 0): return False return True
class Tree: branches=MyDict() def __init__(self,root): self.root=root self.branches[self.root]=root.getTag()+"_"+root.getTag()+"_"+str(root.num_children()) #self.add_branches(root) def treeTraversal(self,traverse="search",printing=False): #count=0 if traverse=="search": pass def printTree(self): #doing this print self.getRoot(True) for k,v in self.branches.iteritems(): if k.is_root(): print v for i in range(k.num_children()): print "|" print "--"+str(i) def getRoot(self,tag=False): if tag: return self.root.getTag() else: return self.root def add_branches(self,parent): def addit(parent): for i in parent.get_child(): self.branches[i]=parent.getTag()+"_"+i.getTag()+"_"+str(i.num_children()) if not isinstance(parent, Node): return if parent.has_children(): addit(parent) for i in parent.get_child(): if isinstance(i, Node): if i.has_children(): addit(i) else: self.add_branches(i) else: self.branches[parent]=parent.get_parent().getTag()+"_"+parent.getTag()+"_"+str(parent.num_children()) def addMyBranches(self,parent): if not isinstance(parent,Node): return if parent.has_children(): for i in parent.get_child(): self.branches[i]=parent.getTag()+"_"+i.getTag()+"_"+str(i.num_children()) else: self.branches[parent]=parent.get_parent().getTag()+"_"+parent.getTag()+"_"+str(parent.num_children())
def _parseArgs(self,argv): n=len(argv)-1 i = 1 while i <= n: param=argv[i] if param.startswith("-"): if param=="-c" and i<n: i+=1 self._configFile=argv[i] elif param=="-o" and i<n-1: i+=1 if not self._options.has_key("cmd"): self._options["cmd"] = MyDict() self._options["cmd"][argv[i]]=argv[i+1] i+=1 else: i = self._parseArgument(argv,i,n) else: i = self._parseArgument(argv,i,n) i = i+1
def test_key(self): d = MyDict() d['key'] = 'value' self.assertEqual(d['key'], 'value')
def test_init(self): d = MyDict(a=1, b='c') self.assertEqual(d.a, 1) self.assertEqual(d.b, 'c') self.assertIsInstance(d, MyDict)
class Node: NodeIndex=MyDict() rootset=False def __init__(self,tag,value=None,parent=None,data=None,root=False,level=0): self.tag=tag #originally commented self.value=value self.data=data self.parent=parent self.root=root self.child=[] self.level=level #if self.parent==None and self.root==False: # raise NoParentException if root: self.NodeIndex[self.tag]=self self.tag=tag if Node.rootset: raise DuplicateRootNode self.level=0 Node.rootset=True else: #self.tag=self.parent.getTag()+"_"+tag #self.level=self.parent.getLevel()+1 pass def set_parent(self,parentnode): self.parent=parentnode if self.parent==None and self.root==False: raise NoParentException self.tag=self.parent.getTag()+"_"+self.tag self.level=self.parent.getLevel()+1 if self.parent is not None: self.parent.add_child(self) self.NodeIndex[self.tag]=self def add_child(self,children,*args): self.child.append(children) if len(args)>0: for i in args: self.child.append(i) def num_children(self): return len(self.child) def get_child(self): return self.child def changeParent(self,parent): self.parent.remove_child(self) self.tag=parent.getTag()+self.tag.split("_")[-1] self.parent=parent self.parent.add_child(self) def has_children(self): return True if len(self.child)!=0 else False def remove_child(self,children): if children in self.child: self.child.remove(children) def move_child(self,children,index): if children in self.child: self.child.remove(children) self.child.insert(index,children) def get_parent(self): return self.parent def is_leaf(self): if len(self.child)==0: return True else: return False def is_root(self): if self.parent==None: return True else: return False def getData(self): return self.data def getTag(self): return self.tag def getValue(self): return self.value def getLevel(self): return self.level def getAll(self): return self.tag,self.value,self.parent,self.child,self.data
from MyDict import MyDict d = MyDict() d['a'] = 1 print(d['a']) print(d.get('b', 0)) print(d['b'])
''' Created on 21-Jun-2016 @author: tcs ''' #from collections import namedtuple from MyDict import MyDict ff=open("rules2.csv") treeDict=MyDict() for i in ff.readlines()[1:]: spl=i.split(",") src_ip,dest_ip,dest_port,action=spl[0],spl[1],str(spl[2]),spl[3] if '\r\n' in action: action=action[:-2] if '\n' in action: action=action[:-1] if treeDict.has_key(dest_ip): if treeDict[dest_ip].has_key(dest_port): if treeDict[dest_ip][dest_port].has_key(src_ip): pass else: treeDict[dest_ip][dest_port][src_ip]=action else: if (src_ip=="*" or src_ip=="*.*.*.*" or src_ip=="any"): treeDict[dest_ip][dest_port]=action else: treeDict[dest_ip][dest_port]={src_ip:action} else: treeDict[dest_ip]={dest_port:{src_ip:action}} #print "Dest_ip" #print treeDict.keys() def printTree():
def setCfg(self,section,key,value): if not self._options.has_key(section): self._options[section] = MyDict() self._options[section][key] = value
def test_keyerror_failed(self): d = MyDict(**{'empty': 'empty'}) with self.assertRaises(KeyError): value = d['empty']
def test_attr(self): d = MyDict() d.key = 'value' self.assertTrue('key' in d) self.assertEqual(d['key'], 'value')
class Tree: branches = MyDict() treeDict = MyDict() def __init__(self, root): self.root = root self.branches[self.root] = root.getTag() + "_" + str( root.num_children()) self.treeDict[root.getTag()] = self.root #self.add_branches(root) def treeTraversal(self, traverse="search", printing=False): #count=0 if traverse == "search": pass def buildTree(self): for v in Node.NodeIndex.values(): self.addMyBranches(v) def printTree(self): for k in Node.NodeIndex.keys(): self.printSubTree(k) def printSubTree(self, node="root"): if node in Node.NodeIndex.keys(): if Node.NodeIndex[node].has_children(): print "-----" * len(Node.NodeIndex[node].getTag().split( "_")) + Node.NodeIndex[node].getTag().split("_")[-1] for i in Node.NodeIndex[node].get_child(): print "-----" * len( i.getTag().split("_")) + i.getTag().split("_")[-1] def getRoot(self, tag=False): if tag: return self.root.getTag() else: return self.root #DO this def BuildTreeDict(self): for j in range(self.treeDict.getSize()): temp1 = self.treeDict.getKeyByIndex(j) ucount = len(temp1.split("_")) count = j for i in range(self.treeDict.getSize()): if temp1 == "".join( self.treeDict.getKeyByIndex(i).split("_"))[:ucount]: count += 1 self.treeDict.insert(self.treeDict.getKeyByIndex(i), self.treeDict.getValueByIndex(i), index=count) def add_branches(self, parent): def addit(parent): for i in parent.get_child(): self.branches[i] = i.getTag() + "_" + str(i.num_children()) if not isinstance(parent, Node): return if parent.has_children(): addit(parent) for i in parent.get_child(): if isinstance(i, Node): if i.has_children(): addit(i) else: self.add_branches(i) else: self.branches[parent] = parent.getTag() + "_" + str( parent.num_children()) def addMyBranches(self, parent): if not isinstance(parent, Node): return if parent.has_children(): for i in parent.get_child(): self.branches[i] = i.getTag() + "_" + str(i.num_children()) self.treeDict[i.getTag()] = i else: self.branches[parent] = parent.getTag() + "_" + str( parent.num_children()) self.treeDict[parent.getTag()] = parent
def test_init(self): md = MyDict(a=1, b="bbb") self.assertEqual(md.a, 1) self.assertEqual(md.b, "bbb") self.assertTrue(isinstance(md, dict))
def test_attr(self): d = MyDict() d.key = "value" self.assertTrue("key" in d) self.assertEqual(d["key"], "value")
def test_error(self): md = MyDict() with self.assertRaises(AttributeError): # 测试是否引发异常的断言语法 v = md.empty
def test_keyerror(self): d = MyDict() with self.assertRaises(KeyError): value = d['empty']
n2=Node("in",parent=n1) n3=Node("out",parent=n1) n4=Node("any",parent=n1) n5=Node("tcp",parent=n2) n6=Node("tcp",parent=n3) n7=Node("tcp",parent=n4) n8=Node("udp",parent=n2) n9=Node("udp",parent=n3) n10=Node("udp",parent=n4) n11=Node("hello",parent=n10) n12=Node("world",parent=n11) tr=Tree(n1) #tr.printSubTree(i) tr.buildTree() #tr.printTree() #print tr.branches.values() #print tr.branches.getValueByIndex(0) tempDict=MyDict() for k,v in tr.treeDict.iteritems(): tempDict[k]=v #print tempDict.keys() for i in range(tempDict.getSize()): temp1=tempDict.getKeyByIndex(i) ucount=len(temp1.split("_"))-1 if not ucount: print temp1+":"+str(ucount) continue temp2="_".join(temp1.split("_")[:-1]) print temp1+":"+str(ucount) print temp2
def test_attrerror(self): d = MyDict() with self.assertRaises(AttributeError): value = d.empty
''' Created on 21-Jun-2016 @author: tcs ''' #from collections import namedtuple from MyDict import MyDict ff = open("rules2.csv") treeDict = MyDict() for i in ff.readlines()[1:]: spl = i.split(",") src_ip, dest_ip, dest_port, action = spl[0], spl[1], str(spl[2]), spl[3] if '\r\n' in action: action = action[:-2] if '\n' in action: action = action[:-1] if treeDict.has_key(dest_ip): if treeDict[dest_ip].has_key(dest_port): if treeDict[dest_ip][dest_port].has_key(src_ip): pass else: treeDict[dest_ip][dest_port][src_ip] = action else: if (src_ip == "*" or src_ip == "*.*.*.*" or src_ip == "any"): treeDict[dest_ip][dest_port] = action else: treeDict[dest_ip][dest_port] = {src_ip: action} else: treeDict[dest_ip] = {dest_port: {src_ip: action}} #print "Dest_ip"
def test_init(self): d = MyDict(a=2, b="3") self.assertEqual(d.a, 2) self.assertEqual(d.b, '3')
class Tree: branches=MyDict() treeDict=MyDict() isBuild=False def __init__(self,root): self.root=root self.branches[self.root]=root.getTag() self.treeDict[root.getTag()]=self.root #self.add_branches(root) #Need To Do method def treeTraversal(self,traverse="search",printing=False): #count=0 if traverse=="search": pass def buildTree(self): for v in Node.NodeIndex.values(): self.addMyBranches(v) self.BuildTreeDict() def printTree(self,onlyvalues=False): if not self.isBuild: self.BuildTreeDict() if not onlyvalues: for i in self.treeDict.keys(): print " "*(len(i.split("_"))-1)+i else: for i in self.treeDict.keys(): print " "*(len(i.split("_"))-1)+i.split("_")[-1] def getRoot(self,tag=False): if tag: return self.root.getTag() else: return self.root def printOnlyChilds(self,subkey): if not self.isBuild: self.BuildTreeDict() index=self.treeDict.indexofkey(subkey) print subkey if not self.treeDict[subkey].has_children(): return for j in range(index+1,self.treeDict.getSize()): if subkey=="_".join(self.treeDict.getKeyByIndex(j).split("_")[:-1]): print " "+self.treeDict.getKeyByIndex(j) def printSubTree(self,subkey): if not self.isBuild: self.BuildTreeDict() index=self.treeDict.indexofkey(subkey) print subkey length=len(subkey.split("_")) for j in range(index+1,self.treeDict.getSize()): if self.treeDict.getKeyByIndex(j).startswith(subkey): print " "*(len(self.treeDict.getKeyByIndex(j).split("_"))-length)+self.treeDict.getKeyByIndex(j) def BuildTreeDict(self): self.isBuild=True for i in range(self.treeDict.getSize()): temp1=self.treeDict.getKeyByIndex(i) indexcount=i+1 for j in range(self.treeDict.getSize()): if j<=i: continue if "_".join(self.treeDict.getKeyByIndex(j).split("_")[:-1])==temp1: self.treeDict.insert(self.treeDict.getKeyByIndex(j), self.treeDict.getValueByIndex(j), indexcount) indexcount+=1 #Duplicate method and waste can delete def add_branches(self,parent): def addit(parent): for i in parent.get_child(): self.branches[i]=i.getTag() if not isinstance(parent, Node): return if parent.has_children(): addit(parent) for i in parent.get_child(): if isinstance(i, Node): if i.has_children(): addit(i) else: self.add_branches(i) else: self.branches[parent]=parent.getTag() def addMyBranches(self,parent): if not isinstance(parent,Node): return if parent.has_children(): for i in parent.get_child(): self.branches[i]=i.getTag() self.treeDict[i.getTag()]=i else: self.branches[parent]=parent.getTag() self.treeDict[parent.getTag()]=parent
class BaseApplication(object): """ Base Aplication, with configuration stuff, etc... Intended to be used with any type of GUI framework (Gtk, Qt, wxPython, Tk, CEGUI, etc...) """ _options = MyDict() #: Defines app options _configFile = "config/config.xml" #: Defines the config file path _old_stdout = None _old_stderr = None _logdir = 'log' _log = None _logerr = None def __init__(self,args = None,redirect=True): """ Init app @param args: App Args @param redirect: Redirects stdout/stderr to log file """ if args!=None: self._parseArgs(args) if os.path.isfile(self._configFile): self._readConfig() self._setCmdConfig() self._logdir = self.getCfg('global','system.logdir') if self._logdir==None: self._logdir="log" if not os.path.exists(self._logdir): os.mkdir(self._logdir) if redirect: self._log = Mlog(sys.stdout,self._logdir + '/stdout.log','w') self._logerr = Mlog(sys.stderr,self._logdir + '/stderr.log','w') self._old_stdout = sys.stdout self._old_stderr = sys.stderr sys.stdout = self._log sys.stderr = self._logerr else: self._log = sys.stdout self._logerr = sys.stderr self._installGettext() def __del__(self): self._saveConfig() if self._old_stdout is not None: sys.stdout = self._old_stdout self._log.close() if self._old_stderr is not None: sys.stderr = self._old_stderr self._logerr.close() def _parseArgs(self,argv): n=len(argv)-1 i = 1 while i <= n: param=argv[i] if param.startswith("-"): if param=="-c" and i<n: i+=1 self._configFile=argv[i] elif param=="-o" and i<n-1: i+=1 if not self._options.has_key("cmd"): self._options["cmd"] = MyDict() self._options["cmd"][argv[i]]=argv[i+1] i+=1 else: i = self._parseArgument(argv,i,n) else: i = self._parseArgument(argv,i,n) i = i+1 def _parseArgument(self,argv,i,n): print "Ignoring Unknown Parameter %s" %(argv[i],) return i def _readConfig(self): """Load App configuration""" if self._configFile!=None: self._config = XMLParser() self._config.readfile(self._configFile) for section in self._config.xsd7config[0].xsection: for option in section.xoption: if not self._options.has_key(section.pname): self._options[section.pname] = MyDict() self._options[section.pname][option.pname] = option.pvalue self._setConfigDefaults() def _setConfigDefaults(self): """ Set the default configuration values """ if self.getCfg('global','app.gettext.locales') == None: self.setCfg('global','app.gettext.locales','data/system/locales') if self.getCfg('global','app.gettext.domain') == None: self.setCfg('global','app.gettext.domain',self._getGettextDomain()) if self.getCfg('global','system.logdir') == None: self.setCfg('global','system.logdir','log') def _getGettextDomain(self): return "Undefined" def _setCmdConfig(self): """ Command line passed args, are more prioritary """ if self._options.has_key("cmd"): for opt in self._options["cmd"]: self._options["global"][opt] = self._options["cmd"][opt] def _saveConfig(self, cfg = None): """Save App configuration""" if cfg == None: cfg = self._configFile try: os.makedirs(os.path.dirname(self._configFile)) except OSError: pass if cfg != None: out = file(cfg,'w') out.write("""<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE sd7config SYSTEM "http://7d7.almlys.org/spec/draft/sd7Config.dtd"> <sd7config> """) for section in self._options: if section == "cmd": # Hide command line options continue out.write("\t<section name='%s'>\n" %(section,)) for option in self._options[section]: if option.startswith("_"): continue out.write("\t\t<option name='%s' value='%s' />\n" %(option,self._options[section][option])) out.write("\t</section>\n\n") out.write("</sd7config>") out.close() def setCfg(self,section,key,value): if not self._options.has_key(section): self._options[section] = MyDict() self._options[section][key] = value def getCfg(self,section,key): """ Gets a configuration value """ if self._options.has_key(section) and self._options[section].has_key(key): return self._options[section][key] return None def _installGettext(self,lang=None): """Installs GetText""" import gettext if lang == None: gettext.install(self.getCfg("global","app.gettext.domain"), self.getCfg("global","app.gettext.locales"),True) else: gettext.translation(self.getCfg("global","app.gettext.domain"), self.getCfg("global","app.gettext.locales"), (lang,)).install(True) def getLanguages(self): """ Returns all available languages """ try: return self.__Languages except: import dircache self.__Languages={} # Dirty hardcoded ugly LangDict _ = lambda x : x LangDict={"en":_("English"),"es":_("Spanish"),"ca":_("Catalan")} for lan in dircache.listdir(self.getCfg("global","app.gettext.locales")): if lan in LangDict: self.__Languages[lan]=LangDict[lan] else: self.__Languages[lan]=lan return self.__Languages def setLanguage(self,lang): """ Sets the application language """ #import locale #locale.setlocale(locale.LC_ALL, (lang,"utf-8")) self.__Language=lang self._installGettext(lang) def getLanguage(self): """ Returns current application language """ try: return self.__Language except: import locale self.__Language=locale.getdefaultlocale()[0][:2] return self.__Language def getAppVersion(self): """ Returns thea application version """ return "$Revision$"
def test_init(self): d = MyDict(a=1, b='test') # self.assertEqual(d.a,1) # self.assertEqual(d.b,'test') self.assertTrue(isinstance(d, dict))
''' Created on 21-Jun-2016 @author: tcs ''' from collections import Counter from MyDict import MyDic,MyDict from netaddr import IPNetwork,IPAddress ff=open("rules.csv") treeDict=MyDict() def convertIP(ipadd): if ("/" in ipadd) or ("*" not in ipadd): return ipadd if ipadd=="*": return "0.0.0.0/0" count=0 temp="" for i in ipadd.split("."): if '*'==i: count+=1 temp+="0." else: temp+=i+"." return temp[:-1]+"/"+str(32-count*8) def checkMatch(ipadr,ipnet): if IPAddress(convertIP(ipadr)) in IPNetwork(convertIP(ipnet)): return True else: return False def buildTree(): for i in ff.readlines()[1:]:
class Node: NodeIndex = MyDict() def __init__(self, tag, value=None, parent=None, data=None, root=False): self.tag = tag self.value = value self.data = data self.parent = parent self.root = root self.child = [] if self.parent is not None: parent.add_child(self) self.NodeIndex[tag] = self def add_child(self, children, *args): self.child.append(children) if len(args) > 0: for i in args: self.child.append(i) def num_children(self): return len(self.child) def get_child(self): return self.child def has_children(self): return True if len(self.child) != 0 else False def remove_child(self, children): if children in self.child: self.child.remove(children) def move_child(self, children, index): if children in self.child: self.child.remove(children) self.child.insert(index, children) def set_parent(self, parentnode): self.parent = parentnode def get_parent(self): return self.parent def is_leaf(self): if len(self.child) == 0: return True else: return False def is_root(self): if self.parent == None: return True else: return False def getData(self): return self.data def getTag(self): return self.tag def getValue(self): return self.value def getAll(self): return self.tag, self.value, self.parent, self.child, self.data
def main(): f = pandas.read_csv("rules.csv", header=0) global root global root_in global root_out global root_any global tree global levels levels = 1 root_any = copy.deepcopy(f) root_any.drop('inout', axis=1, inplace=True) root_in = f.groupby('inout').get_group('in') root_out = f.groupby('inout').get_group('out') levels += 1 def createNew(df, dfname, grp): global levels levels += 1 for i in df.groupby(grp).groups.keys(): if i == "any": continue globals().update({dfname + "_" + i: df.groupby(grp).get_group(i)}) temp = copy.deepcopy(df) temp.drop(grp, axis=1, inplace=True) globals().update({dfname + "_any": copy.deepcopy(temp)}) createNew(root_in, "root_in", "protocol") createNew(root_out, "root_out", "protocol") createNew(root_any, "root_any", "protocol") for k in globals().keys(): if k.startswith('root_in_') or k.startswith( 'root_out_') or k.startswith('root_any_'): createNew(globals()[k], k, 'dstip') for k in globals().keys(): if k.startswith('root_') and len(k.split("_")) == 4: createNew(globals()[k], str(k), 'srcport') for k in globals().keys(): if k.startswith('root_'): globals()[k] = globals()[k].values root = Node("root", root=True) for k in globals().keys(): try: if k.startswith('root_'): globals().update({ "$".join(k.split("_")): Node(k.split("_")[-1], value=globals()[k]) }) except KeyError: print "error occured for ", k tempdict = MyDict() tempdict = globals() templist = ['root'] count = 2 while (True): if count == levels: break for k in tempdict.keys(): if k.startswith('root$') and len(k.split("$")) == count: templist.append(k) else: continue count += 1 for k in templist[1:]: try: globals()[k].set_parent(globals()["$".join(k.split("$")[:-1])]) except KeyError: print "error occured for ", k tree = Tree(root) tree.buildTree() tree.printTree()
def main(): f=pandas.read_csv("rules.csv",header=0) global root global root_in global root_out global root_any global tree global levels levels=1 root_any=copy.deepcopy(f) root_any.drop('inout',axis=1,inplace=True) root_in=f.groupby('inout').get_group('in') root_out=f.groupby('inout').get_group('out') levels+=1 def createNew(df,dfname,grp): global levels levels+=1 for i in df.groupby(grp).groups.keys(): if i=="any": continue globals().update({dfname+"_"+i:df.groupby(grp).get_group(i)}) temp=copy.deepcopy(df) temp.drop(grp,axis=1,inplace=True) globals().update({dfname+"_any":copy.deepcopy(temp)}) createNew(root_in,"root_in","protocol") createNew(root_out,"root_out","protocol") createNew(root_any,"root_any","protocol") for k in globals().keys(): if k.startswith('root_in_') or k.startswith('root_out_') or k.startswith('root_any_'): createNew(globals()[k],k,'dstip') for k in globals().keys(): if k.startswith('root_') and len(k.split("_"))==4: createNew(globals()[k],str(k),'srcport') for k in globals().keys(): if k.startswith('root_'): globals()[k]=globals()[k].values root=Node("root",root=True) for k in globals().keys(): try: if k.startswith('root_'): globals().update({"$".join(k.split("_")):Node(k.split("_")[-1],value=globals()[k])}) except KeyError: print "error occured for ",k tempdict=MyDict() tempdict=globals() templist=['root'] count=2 while(True): if count==levels: break for k in tempdict.keys(): if k.startswith('root$') and len(k.split("$"))==count: templist.append(k) else: continue count+=1 for k in templist[1:]: try: globals()[k].set_parent(globals()["$".join(k.split("$")[:-1])]) except KeyError: print "error occured for ",k tree=Tree(root) tree.buildTree() tree.printTree()