def analyseFile(self, fileName, encoding=None, dialect_suggestion=None, limit=None):
        if encoding is None:
            encoding = "utf8"
        if self.DEBUG_PARSER:
            self.registerMessage("Analysing file: {0}, encoding: {1}".format(fileName, encoding))
        with open(fileName, 'rbU') as byte_file_obj:
            # I can't imagine this having any problems
            byte_sample = byte_file_obj.read(1000)
            byte_file_obj.seek(0)

            if dialect_suggestion:
                csvdialect = UnicodeCsvDialectUtils.get_dialect_from_suggestion(dialect_suggestion)
            else:
                try:
                    csvdialect = unicodecsv.Sniffer().sniff(byte_sample)
                    assert csvdialect.delimiter ==',', "sanity test"
                except Exception:
                    csvdialect = UnicodeCsvDialectUtils.default_dialect

            if self.DEBUG_PARSER:
                self.registerMessage(UnicodeCsvDialectUtils.dialect_to_str(csvdialect))

            unicodecsvreader = unicodecsv.reader(byte_file_obj, dialect=csvdialect, encoding=encoding, strict=True)
            return self.analyseRows(unicodecsvreader, fileName)
        return None
 def exportItems(self, filePath, colNames, dialect = None, encoding="utf8"):
     assert filePath, "needs a filepath"
     assert colNames, "needs colNames"
     assert self.objects, "meeds items"
     with open(filePath, 'w+') as outFile:
         if dialect is None:
             csvdialect = UnicodeCsvDialectUtils.act_out
         else:
             csvdialect = UnicodeCsvDialectUtils.get_dialect_from_suggestion(dialect)
         # unicodecsv.register_dialect('act_out', delimiter=',', quoting=unicodecsv.QUOTE_ALL, doublequote=False, strict=True, quotechar="\"", escapechar="`")
         if self.DEBUG_ABSTRACT:
             self.registerMessage(UnicodeCsvDialectUtils.dialect_to_str(csvdialect))
         dictwriter = unicodecsv.DictWriter(
             outFile,
             dialect=csvdialect,
             fieldnames=colNames.keys(),
             encoding=encoding,
             extrasaction='ignore',
         )
         dictwriter.writerow(colNames)
         dictwriter.writerows(self.objects)
     self.registerMessage("WROTE FILE: %s" % filePath)