lineno Number of lines processed (including header line)
'''
+ def create_mapper(self, do_trim, null_data, null_rep):
+ # Create mapper to frob data elements
+ if null_data:
+ null_rep = do_trim(null_rep)
+
+ def mapper(st):
+ st = do_trim(st)
+ # psycopg2 maps None to NULL
+ return None if st == null_rep else st
+ self._mapper = mapper
+ else:
+ self._mapper = do_trim
+
+ def create_parser(self, file_fmt, eol):
+ # Create parser to read raw lines into a list
+ if file_fmt == CSV:
+ self._parser = lambda st: self._extend(st,
+ next(csv_reader((st,))))
+ else: # Tab delimited format
+ neg_eollen = -len(eol)
+
+ def tab_parser(line):
+ if neg_eollen and line[neg_eollen:] == eol:
+ line = line[:neg_eollen]
+ return self._extend(line, line.split('\t'))
+ self._parser = tab_parser
+
def __init__(self, fileo, file_fmt, null_data, null_rep, trim=True):
'''
fileo Uploaded file object
# Get column headings
eol, self.headers = get_headers()
- neg_eollen = -len(eol)
self.cols = len(self.headers.tuples)
- # Create parser to read raw lines into a list
- if file_fmt == CSV:
- self._parser = lambda st: self._extend(st,
- next(csv_reader((st,))))
- else: # Tab delimited format
- def tab_parser(line):
- if neg_eollen and line[neg_eollen:] == eol:
- line = line[:neg_eollen]
- return self._extend(line, line.split('\t'))
- self._parser = tab_parser
-
- # Create mapper to frob data elements
- if null_data:
- null_rep = do_trim(null_rep)
-
- def mapper(st):
- st = do_trim(st)
- # psycopg2 maps None to NULL
- return None if st == null_rep else st
- self._mapper = mapper
- else:
- self._mapper = do_trim
+ self.create_parser(file_fmt, eol)
+ self.create_mapper(do_trim, null_data, null_rep)
def _thunk(self):
'''