Go to the documentation of this file.00001
00002 import copy
00003
00004 class filereader:
00005
00006 class Module:
00007 def __init__(self,label='',value=[]):
00008 self.label=label
00009 self.value=value
00010
00011 def __init__(self):
00012 self.aList=['Module', 'ESSource']
00013
00014 def startswith(self,line):
00015 "Checks if the first word of the line starts with any of the aList elements"
00016 for item in self.aList:
00017 if line.startswith(item):
00018 return True
00019 return False
00020
00021 def readfile(self,nomefile):
00022 "Reads the file line by line and searches for the begin and the end of each Module block"
00023 aFile = open(nomefile)
00024 module=[]
00025 value=[]
00026 file_modules = {}
00027 processHistory=False
00028 processing=False
00029 insideModuleBlock = False
00030 insideParameterBlock = False
00031 nprocess=-1
00032 key=''
00033 for line in aFile.readlines():
00034 if line.startswith("Processing History:"):
00035 value=[]
00036 processHistory=True
00037 elif (not line.startswith('---------Event')) and processHistory:
00038 splitLine= line.split()
00039 if splitLine[3]=='[2]':
00040 processing=True
00041 value.append(line)
00042 elif processing:
00043 value.append(line)
00044 elif line.startswith('---------Event') and processing:
00045 file_modules['Processing']=value
00046 processHistory=False
00047 processing=False
00048 elif self.startswith(line):
00049 if insideParameterBlock:
00050 module.append(tuple(value))
00051 file_modules[key].append(module)
00052 insideParameterBlock = False
00053 insideModuleBlock = False
00054 value=[]
00055 module=[]
00056 splitLine= line.split()
00057 key=splitLine[-1]
00058 if key not in file_modules.keys():
00059 file_modules[key]=[]
00060 module.append(splitLine[-2])
00061 value.append(line[:-1])
00062 insideModuleBlock = True
00063 insideParameterBlock = False
00064 elif (line.startswith(' parameters')) and insideModuleBlock:
00065 insideParameterBlock = True
00066 value.append(line[:-1])
00067 elif line.startswith('ESModule') and insideParameterBlock:
00068 module.append(tuple(value))
00069 file_modules[key].append(module)
00070 insideParameterBlock = False
00071 insideModuleBlock = False
00072
00073
00074
00075
00076
00077 elif (insideParameterBlock):
00078 value.append(line[:-1])
00079
00080 if insideParameterBlock:
00081 module.append(tuple(value))
00082 file_modules[key].append(module)
00083 insideParameterBlock = False
00084 insideModuleBlock = False
00085
00086
00087 return file_modules
00088