2017-04-27 53 views
0

我是Python中OOPS的新手。我创建了以下输入文件。我编写了python代码以从输入文件获取详细信息到本地类变量。我需要帮助创建一个更好的方式来安排和访问输入文件。Python中的数据结构帮助

DETAILS INPUT FABRIC -A FABRIC -A FABRIC -A FABRIC-A  FABRIC -B FABRIC -B FABRIC -B FABRIC-B 
ARRAY_SERIAL # T663xt AB12343        
HOST_NAME aaaaa 10000090FA87EC7A 10000090FA87EC7B 10000090FA87EC7C 10000090FA87EC7C SEPERATION 10000091FA87EC7B 10000091FA87EC7C 10000091FA87EC7D 10000091FA87EC7D 
HOST_NAME bbbbb 10000091FA87ED8A 10000091FA87FC8B 10000091FA87EC8C 10000091FA87EC8D SEPERATION 10000092FA87ED8E 10000092FA87FC8F 10000092FA87EC8G 10000092FA87EC8H 
HOST_NAME ccccc 10000093FA87ED8D 10000093FA87FC8 10000093FA87EC8C 10000093FA87EC8C SEPERATION 10000093FA87ED8D 10000093FA87FC8D 10000093FA87EC8C 10000093FA87EC8C 
CLUSTER YES         
FAB_A_FA 1E:0 2F:0 3G:0        
FAB_B_FA 16E:0 15F:0 14G:0       

我在下一列我在一列中的值和其各自的价值。

我已创建,其具有它的类变量,以在第1列的所有元素状阵列,主机(字典),集群呼叫,fa_A(字典),fa_B(字典)。

我存储他们的变量,这样我可以访问它们生成一些打印语句。

例如开关命令功能将产生主机

alicreate "aaaaa_hba1", "10000090FA87EC7A" 
alicreate "aaaaa_hba2", "10000090FA87EC7B" 
alicreate "aaaaa_hba3", "10000090FA87EC7C" 
zonecreate "aaaaa_hba1_T663xt_1E_0", "aaaaa_hba1;T663xt_1E_0" 

等我想知道什么是做到这一点的最佳方式开关命令。这将更好地创造一流的主机和输入文件实例主机的所有主机,并生成等。

请在下面找到我的代码。

#!/usr/bin/python 
import os.path 
import fileinput 
import re 

#print "Hello World!!" 
class checkingInputFile(): 
    array = []  
    host = {} 
    cluster = 0 
    fabricAFas = {} 
    fabricBFas = {} 

    def __init__(self): 
     print "Initializing file class" 

    def checkFile (self, file): 
     self.file = file 
     #print ("I am in checkFile "+ file) 
     try : 
      if os.path.isfile (self.file) : 
       print ("File"+ self.file +" exists \n") 
      else: 
       print "file does not exists" 
     except : 
      print ("File " + self.file + "does not exists") 

    def parsingFile (self, file): 
     self.file = file 

     print ("I am in switch command function" + self.file) 
     for line in fileinput.input (self.file): 
      #print (line)  
      arrayTemp = re.search (r'^ARRAY_SERIAL #,(\w+),(\w+)?,(\w+)?(\w+)?,(\w+)?,.*', line, re.M|re.I) 
      if arrayTemp is not None : 
       #print ("array lenght " + str(len(arrayTemp.group()))) 
       count = 0 
       try: 
        while arrayTemp.group() is not None: 
         #print arrayTemp.group(count+1) 
         #print "count value is ", count 
         if arrayTemp.group(count+1) is not None : 
         # print "count value inside if loop ",arrayTemp.group(count+1) 
          checkingInputFile.array.append(arrayTemp.group(count+1)) 
          print " After appending ",checkingInputFile.array 
         count = count + 1 
        else: 
         print " END OF ARRAYS line \n" 
       except IndexError: 
        print " No More Array Values" 
      ### Creating host Dictionary 
      hostTemp = re.search (r'^HOST_NAME,(\w+)?,?(w+)?,?(\w+)?,?(\w+)?,?(\w+)?,?(\w+)?,?,(\w+),(w+)?,?(\w+)?,?(\w+)?,?(\w+)?,?(\w+)?,', line, re.M|re.I) 
      if hostTemp is not None: 
        #print "host values", hostTemp.group() 
        count = 0 
        try: 
         #while hostTemp.group() is not None: 
          #print hostTemp.group(count+1) 
          #print "count value is ", count 
          if hostTemp.group(count+1) is not None : 
          # print "count value inside if loop ",hostTemp.group(count+1) 
           temp = hostTemp.group().split(",") 
           del temp[0] 
           checkingInputFile.host [ hostTemp.group(count + 1)] = temp 
           print checkingInputFile.host[hostTemp.group(count + 1)] 
          #count = count + 1 
        except IndexError: 
         print " No More Host Values" 

      clusterTemp = re.search (r'^cluster,(\w+),?', line, re.M|re.I) 
      if clusterTemp is not None : 
        #print "host values", clusterTemp.group() 
        count = 0 
        try: 
         #while clusterTemp.group() is not None: 
          #print clusterTemp.group(count+1) 
          #print "count value is ", count 
          if clusterTemp.group(count+1) is not None : 
          # print "count value inside if loop ",clusterTemp.group(count+1) 
           temp = clusterTemp.group().split(",") 
           del temp[0] 
           checkingInputFile.cluster = clusterTemp.group (count + 1) 
           print checkingInputFile.cluster 
          #count = count + 1 
        except IndexError: 
         print " No More Cluster Values" 
      fabricATemp = re.search (r'^(FAB_A_FA),([\w:]+),?([\w:]+)?,?([\w:]+),?([\w:]+)?,?', line, re.M|re.I) 
      if fabricATemp is not None : 
        print fabricATemp.group() 
        count = 0 
        try: 
         #while fabricATemp.group() is not None: 
          #print fabricATemp.group(count+1) 
          #print "count value is ", count 
          if fabricATemp.group(count) is not None : 
          # print "count value inside if loop ",fabricATemp.group(count+1) 
           temp = fabricATemp.group().split(",") 
           del temp[0] 
           checkingInputFile.fabricAFas [ fabricATemp.group(count + 1)] = temp 
           print checkingInputFile.fabricAFas 
          #count = count + 1 
        except IndexError: 
         print " No More Cluster Values" 
      fabricBTemp = re.search (r'^(FAB_B_FA),([\w:]+),?([\w:]+)?,?([\w:]+),?([\w:]+)?,?', line, re.M|re.I) 
      if fabricBTemp is not None : 
        print fabricBTemp.group() 
        count = 0 
        try: 
         #while fabricBTemp.group() is not None: 
          #print fabricBTemp.group(count+1) 
          #print "count value is ", count 
          if fabricBTemp.group(count) is not None : 
          # print "count value inside if loop ",fabricBTemp.group(count+1) 
           temp = fabricBTemp.group().split(",") 
           del temp[0] 
           checkingInputFile.fabricBFas [ fabricBTemp.group(count + 1)] = temp 
           print checkingInputFile.fabricBFas 
          #count = count + 1 
        except IndexError: 
         print " No More Cluster Values" 
     fileinput.close 
class switchCommandGenerator(checkingInputFile) : 

    def __init__(self): 
     print " I am inside switchCommandGenerator Initilazation" 
    #def broacadeCommand (self,*kargs[]): 


def main(): 
    InputFile = "/home/pradeep/Documents/Scripts/input.csv" 
    F1 = checkingInputFile() 
    F1.checkFile(InputFile) 

    #SW = switchCommandGenerator() 
    F1.parsingFile (InputFile) 



if __name__ == "__main__": 
    main() 

回答

0

我假设no.of记录在数以百万计的数百年中并不庞大。 如何解析并保存内存中的规范化数据如下。 在实施期间,请致电相关项目了解详情。

数据结构:

serials (list or set) 
host (dictionary) 
    { 
    name: "aaaa" 
    Fabric-A: [] (list or set) 
    Fabric-B: [] (list or set) 
    } 
cluster (bool) 
fab_A = (dictionary) 
fab_B = (dictionary) 

如果它不会帮助乌拉圭回合的解决方案,可以准确地eloborateü要建设什么样的。