<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def directory_opener(path, pattern='', verbose=False):
 """Directory opener. :param str path: Path. :param str pattern: Regular expression pattern. :return: Filehandle(s). """

    if not os.path.isdir(path):
        raise NotADirectoryError
    else:
        openers_list = [opener for opener in openers if not opener.__name__.startswith('directory')]  # remove directory

        for root, dirlist, filelist in os.walk(path):
            for filename in filelist:

                if pattern and not re.match(pattern, filename):
                    logger.verbose('Skipping file: {}, did not match regex pattern "{}"'.format(os.path.abspath(filename), pattern))
                    continue

                filename_path = os.path.abspath(os.path.join(root, filename))
                for filehandle in filehandles(filename_path, openers_list=openers_list, pattern=pattern, verbose=verbose):
                    yield filehandle