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()