Exemplo n.º 1
0
def createReader(readable, **keywords):
    """
    A reader fitting the contents of ``readable``. Supported formats are
    delimited data (such as CSV), ODS and Excel. When iterating the reader,
    it returns a Python array for each row of data.
    """
    # TODO: Get rid of circular import.
    import _parsers

    assert readable is not None
    encoding = keywords.get("encoding", DEFAULT_ENCODING)
    assert encoding is not None

    result = None
    icdHeader = readable.read(4)
    _log.debug(u"header=%r", icdHeader)
    if icdHeader == _ODS_HEADER:
        # Consider ICD to be ODS.
        readable.seek(0)
        result = _parsers.odsReader(readable)
    else:
        icdHeader += readable.read(4)
        readable.seek(0)
        if _tools.isEqualBytes(icdHeader, _EXCEL_HEADER):
            # Consider ICD to be Excel.
            result = _parsers.excelReader(readable)
        else:
            # Consider ICD to be CSV.
            dialect = _parsers.DelimitedDialect()
            dialect.lineDelimiter = _parsers.AUTO
            dialect.itemDelimiter = _parsers.AUTO
            dialect.quoteChar = "\""
            dialect.escapeChar = "\""
            result = _parsers.delimitedReader(readable, dialect, encoding)
    return result
Exemplo n.º 2
0
 def testIcdCustomersXls(self):
     icdCustomersIcdXlsPath = dev_test.getTestIcdPath("customers.xls")
     readable = open(icdCustomersIcdXlsPath, "rb")
     try:
         for row in _parsers.excelReader(readable):
             self.assertTrue(row is not None)
             self.assertTrue(len(row))
     except _parsers.CutplaceXlrdImportError:
         _log.warning("ignored ImportError caused by missing xlrd")
     finally:
         readable.close()
Exemplo n.º 3
0
 def testIcdCustomersXls(self):
     icdCustomersIcdXlsPath = dev_test.getTestIcdPath("customers.xls")
     readable = open(icdCustomersIcdXlsPath, "rb")
     try:
         for row in _parsers.excelReader(readable):
             self.assertTrue(row is not None)
             self.assertTrue(len(row))
     except _parsers.CutplaceXlrdImportError:
         _log.warning("ignored ImportError caused by missing xlrd")
     finally:
         readable.close()
Exemplo n.º 4
0
 def testCellValue(self):
     fieldTypesXlsPath = dev_test.getTestInputPath("fieldtypes.xls")
     readable = open(fieldTypesXlsPath, "rb")
     try:
         titleRowSkipped = False
         for row in _parsers.excelReader(readable):
             self.assertTrue(row is not None)
             self.assertTrue(len(row) == 3, "row=%r" % row)
             if titleRowSkipped:
                 self.assertEqual(row[1], row[2], "row=%r" % row)
             else:
                 titleRowSkipped = True
     except _parsers.CutplaceXlrdImportError:
         _log.warning("ignored ImportError caused by missing xlrd")
     finally:
         readable.close()
Exemplo n.º 5
0
 def testCellValue(self):
     fieldTypesXlsPath = dev_test.getTestInputPath("fieldtypes.xls")
     readable = open(fieldTypesXlsPath, "rb")
     try:
         titleRowSkipped = False
         for row in _parsers.excelReader(readable):
             self.assertTrue(row is not None)
             self.assertTrue(len(row) == 3, "row=%r" % row)
             if titleRowSkipped:
                 self.assertEqual(row[1], row[2], "row=%r" % row)
             else:
                 titleRowSkipped = True
     except _parsers.CutplaceXlrdImportError:
         _log.warning("ignored ImportError caused by missing xlrd")
     finally:
         readable.close()