'Dispatch to specific method to read file content, according to its mimetype or file type
:param options : dict of reading options (quoting, separator, ...)'

@api.multi
def _read_file(self, options):

    self.ensure_one()
    mimetype = guess_mimetype(self.file)
    (file_extension, handler, req) = FILE_TYPE_DICT.get(mimetype, (None, None, None))
    if handler:
        try:
            return getattr(self, ('_read_' + file_extension))(options)
        except Exception:
            _logger.warn("Failed    to    read    file    '%s'    (transient    id    %d)    using    guessed    mimetype    %s", (self.file_name or '<unknown>'), self.id, mimetype)
    (file_extension, handler, req) = FILE_TYPE_DICT.get(self.file_type, (None, None, None))
    if handler:
        try:
            return getattr(self, ('_read_' + file_extension))(options)
        except Exception:
            _logger.warn("Failed    to    read    file    '%s'    (transient    id    %d)    using    user-provided    mimetype    %s", (self.file_name or '<unknown>'), self.id, self.file_type)
    if self.file_name:
        (p, ext) = os.path.splitext(self.file_name)
        if (ext in EXTENSIONS):
            try:
                return getattr(self, ('_read_' + ext[1:]))(options)
            except Exception:
                _logger.warn("Failed    to    read    file    '%s'    (transient    id    %s)    using    file    extension", self.file_name, self.id)
    if req:
        raise ImportError(_('Unable    to    load    "{extension}"    file:    requires    Python    module    "{modname}"').format(extension=file_extension, modname=req))
    raise ValueError(_('Unsupported    file    format    "{}",    import    only    supports    CSV,    ODS,    XLS    and    XLSX').format(self.file_type))
