def filehandles(path, openers_list=openers, pattern='', verbose=False):
    """Main function that iterates over list of openers and decides which opener to use.

    :param str path: Path.
    :param list openers_list: List of openers.
    :param str pattern: Regular expression pattern.
    :param verbose: Print additional information.
    :type verbose: :py:obj:`True` or :py:obj:`False`
    :return: Filehandle(s).
    """
    if not verbose:
        logging.disable(logging.VERBOSE)

    for opener in openers_list:
        try:
            for filehandle in opener(path=path, pattern=pattern, verbose=verbose):
                with closing(filehandle):
                    yield filehandle
            break  # use the first successful opener function

        except (zipfile.BadZipfile, tarfile.ReadError, GZValidationError,
                BZ2ValidationError, IOError, NotADirectoryError):
             continue

        else:
            logger.verbose('No opener found for path: "{}"'.format(path))
            yield None
def filehandles ( path , openers_list = openers , pattern = '' , verbose = False ) : if not verbose : logging . disable ( logging . VERBOSE ) for opener in openers_list : try : for filehandle in opener ( path = path , pattern = pattern , verbose = verbose ) : with closing ( filehandle ) : yield filehandle break except ( zipfile . BadZipfile , tarfile . ReadError , GZValidationError , BZ2ValidationError , IOError , NotADirectoryError ) : continue else : logger . verbose ( 'No opener found for path: "{}"' . format ( path ) ) yield None
Main function that iterates over list of openers and decides which opener to use.

    :param str path: Path.
    :param list openers_list: List of openers.
    :param str pattern: Regular expression pattern.
    :param verbose: Print additional information.
    :type verbose: :py:obj:`True` or :py:obj:`False`
    :return: Filehandle(s).