def __init__(self,fName,headers=[],separator = ',', firstLineIsHeader=True): self.pFirstLineIsHeader = firstLineIsHeader self.pSeparator = separator self.pFname = fName if len(headers) !=0 and firstLineIsHeader==True: raise RuntimeError('Ambiguous Header Specifications') if os.path.exists(self.pFname): self.pFile = open(self.pFname,'r') firstLine = self.pFile.readline().split(self.pSeparator) ##print firstLine if len(headers) == 0 and firstLineIsHeader==False: numCol = len(firstLine) for n in range (1,numCol): self.pHeader.append(str(n)) elif len(headers) == 0 and firstLineIsHeader==True: self.pHeader = firstLine elif len(headers) != 0 and firstLineIsHeader==False: #if len(firstLine) == len(headers): self.pHeader = headers #else: # raise RuntimeError("Not implemented yet") self.pHeader = map (str.strip, self.pHeader) self.pHeader = map (clean_string,self.pHeader) ##The clean_text return two values: Check how it works here. ## Not easy to use map so let us replace things by list comprehension ##self.pHeader = map (clean_text.,self.pHeader) ##@ANIL I don't want it this ugly tempHeader = [] for cname in self.pHeader: a, h = clean_text(cname,self.pSeparator) a = a.replace('"','') tempHeader.append(a) self.pHeader = tempHeader elif IOError: print ("Unable to find file: "+str(fName))
def reader(self, numLines=-9999): rows = [] nLines = 0 for row in self.pFile: r,rowList = clean_text(row, self.pSeparator) rows.append(rowList) nLines = nLines+1 if(numLines != -9999 and nLines>=numLines): break self.pFile.seek(0,0) if (self.pFirstLineIsHeader == True): self.pFile.readline() return rows