File indexing completed on 2023-03-17 11:16:38
0001
0002 import copy
0003
0004 class filereader:
0005
0006 class Module:
0007 def __init__(self,label='',value=[]):
0008 self.label=label
0009 self.value=value
0010
0011 def __init__(self):
0012 self.aList=['Module', 'ESSource']
0013
0014 def startswith(self,line):
0015 "Checks if the first word of the line starts with any of the aList elements"
0016 for item in self.aList:
0017 if line.startswith(item):
0018 return True
0019 return False
0020
0021 def readfile(self,nomefile):
0022 "Reads the file line by line and searches for the begin and the end of each Module block"
0023 aFile = open(nomefile)
0024 module=[]
0025 value=[]
0026 file_modules = {}
0027 processHistory=False
0028 processing=False
0029 insideModuleBlock = False
0030 insideParameterBlock = False
0031 nprocess=-1
0032 key=''
0033 for line in aFile.readlines():
0034 if line.startswith("Processing History:"):
0035 value=[]
0036 processHistory=True
0037 elif (not line.startswith('---------Event')) and processHistory:
0038 splitLine= line.split()
0039 if splitLine[3]=='[2]':
0040 processing=True
0041 value.append(line)
0042 elif processing:
0043 value.append(line)
0044 elif line.startswith('---------Event') and processing:
0045 file_modules['Processing']=value
0046 processHistory=False
0047 processing=False
0048 elif self.startswith(line):
0049 if insideParameterBlock:
0050 module.append(tuple(value))
0051 file_modules[key].append(module)
0052 insideParameterBlock = False
0053 insideModuleBlock = False
0054 value=[]
0055 module=[]
0056 splitLine= line.split()
0057 key=splitLine[-1]
0058 if key not in file_modules.keys():
0059 file_modules[key]=[]
0060 module.append(splitLine[-2])
0061 value.append(line[:-1])
0062 insideModuleBlock = True
0063 insideParameterBlock = False
0064 elif (line.startswith(' parameters')) and insideModuleBlock:
0065 insideParameterBlock = True
0066 value.append(line[:-1])
0067 elif line.startswith('ESModule') and insideParameterBlock:
0068 module.append(tuple(value))
0069 file_modules[key].append(module)
0070 insideParameterBlock = False
0071 insideModuleBlock = False
0072
0073
0074
0075
0076
0077 elif (insideParameterBlock):
0078 value.append(line[:-1])
0079
0080 if insideParameterBlock:
0081 module.append(tuple(value))
0082 file_modules[key].append(module)
0083 insideParameterBlock = False
0084 insideModuleBlock = False
0085
0086
0087 return file_modules
0088