def fromfile(self,filename): # dispatch convert filename in list of lines self.filename=filename if type(filename) is str: if len(filename)<200: try: file=open(filename) if filename[-3:]=='.gz': file=GzipFile(fileobj=file) except IOError: try: file=open(filename+'.gz') file=GzipFile(fileobj=file) except IOError: file=[] else: file=filename.split('\n') elif type(filename) is list: file=filename else: file=[] if file: file=[line.split() for line in file] while 1: f=file.pop(0) if (f[0] == '@'): self.descs[f[1]]=typeconv(f[2]," ".join(f[3:])) elif ( f[0] == '*'): # self.labels lines f.pop(0) f=map(pythonname,f) self.labels=f elif (f[0] == '$'): # type lines f.pop(0) self.types=f break elif (f[0].startswith('#')): # comment lines pass file=[ tuple(map(typeconv,self.types,f)) for f in file ] data=rec.fromrecords(file,names=self.labels) self.idx=dict(enumerate(data['NAME'])) for l in self.labels: self.data[l]=data[l] setattr(self,l,self.data[l]) setattr(self,l.lower(),self.data[l]) self.__class__.lookup[id(self.data[l])]=l
def fromfile(self, filename): # dispatch convert filename in list of lines self.filename = filename if type(filename) is str: if len(filename) < 200: try: file = open(filename) if filename[-3:] == '.gz': file = GzipFile(fileobj=file) except IOError: try: file = open(filename + '.gz') file = GzipFile(fileobj=file) except IOError: file = [] else: file = filename.split('\n') elif type(filename) is list: file = filename else: file = [] if file: file = [line.split() for line in file] while 1: f = file.pop(0) if (f[0] == '@'): self.descs[f[1]] = typeconv(f[2], " ".join(f[3:])) elif (f[0] == '*'): # self.labels lines f.pop(0) f = map(pythonname, f) self.labels = f elif (f[0] == '$'): # type lines f.pop(0) self.types = f break elif (f[0].startswith('#')): # comment lines pass file = [tuple(map(typeconv, self.types, f)) for f in file] data = rec.fromrecords(file, names=self.labels) self.idx = dict(enumerate(data['NAME'])) for l in self.labels: self.data[l] = data[l] setattr(self, l, self.data[l]) setattr(self, l.lower(), self.data[l]) self.__class__.lookup[id(self.data[l])] = l