def iterfiles(self, include_pattern=None, abspath=False, force_refresh=False): """ Generator for all the files matching pattern and not already excluded. Uses cached file list if available. Args: pattern (str): Unix style (glob like/gitignore like) pattern abspath (bool): Whether to use absolute or relative (default) paths. force_refresh (bool): Whether to refresh from disk or use the cache. """ self.populate_dir(force_refresh) if include_pattern is not None: globster = Globster([include_pattern]) for f in self._files_cache: if include_pattern is None or globster.match(f): if abspath: yield os.path.join(self.path, f) else: yield f
def __init__(self): excludes = ['.git/', '.hg/', '.svn/', 'node_modules'] self.directory = os.path.basename(self.getRootPath()) self.path = os.path.abspath(self.getRootPath()) self.parent = os.path.dirname(self.path) self.exclude_file = self.load_ignore() self.patterns = excludes if self.exclude_file is not None: self.patterns.extend(self.load_patterns(self.exclude_file)) self.globster = Globster(self.patterns)
def __init__(self, directory=".", exclude_file=".exclude", excludes=['.git/', '.hg/', '.svn/']): if not os.path.isdir(directory): raise TypeError("Directory must be a directory.") self.directory = os.path.basename(directory) self.path = os.path.abspath(directory) self.parent = os.path.dirname(self.path) self.exclude_file = os.path.join(self.path, exclude_file) self.patterns = excludes if os.path.isfile(self.exclude_file): self.patterns.extend(load_patterns(self.exclude_file)) self.globster = Globster(self.patterns)
def __init__(self, directory=".", exclude_file=".exclude", excludes=('.git/', '.hg/', '.svn/'), directory_filter=lambda root, dirs, files: True): if not os.path.isdir(directory): raise TypeError("Directory must be a directory.") self.directory = os.path.basename(directory) self.path = os.path.abspath(directory) self.parent = os.path.dirname(self.path) self.exclude_file = os.path.join(self.path, exclude_file) self.patterns = list(excludes) if os.path.isfile(self.exclude_file): self.patterns.extend(load_patterns(self.exclude_file)) self.globster = Globster(self.patterns) self.directory_filter=directory_filter
def itersubdirs(self, pattern=None, abspath=False): """ Generator for all subdirs (except excluded). :type pattern: str :param pattern: Unix style (glob like/gitignore like) pattern """ if pattern is not None: globster = Globster([pattern]) for root, dirs, files in self.walk(): for d in dirs: if pattern is None or (pattern is not None and globster.match(d)): if abspath: yield os.path.join(root, d) else: yield self.relpath(os.path.join(root, d))
def iterfiles(self, pattern=None, abspath=False): """ Generator for all the files not excluded recursively. Return relative path. :type pattern: str :param pattern: Unix style (glob like/gitignore like) pattern """ if pattern is not None: globster = Globster([pattern]) for root, dirs, files in self.walk(): for f in files: if pattern is None or (pattern is not None and globster.match(f)): if abspath: yield os.path.join(root, f) else: yield self.relpath(os.path.join(root, f))
def __init__(self, directory=".", exclude_file=None, excludes=['.git/', '.hg/', '.svn/']): if not os.path.isdir(directory): raise TypeError("Directory must be a directory.") self.directory = os.path.basename(directory) self.path = os.path.abspath(directory) self.parent = os.path.dirname(self.path) self.patterns = excludes self._files_cache = [] self._sub_dirs_cache = [] self._is_populated = False if exclude_file: self.exclude_file = os.path.join(self.path, exclude_file) if os.path.isfile(self.exclude_file): file_patt = filter(None, open(exclude_file).read().split("\n")) self.patterns.extend(file_patt) self.globster = Globster(self.patterns)
def itersubdirs(self, pattern=None, abspath=False, force_refresh=False): """ Generator for all subdirs matching pattern and not excluded. Uses cached dir list if available. Args: pattern (str): Unix style (glob like/gitignore like) pattern abspath (bool): whether to use absolute or relative (default) paths. force_refresh (bool): Whether to refresh from disk or use the cache. """ self.populate_dir(force_refresh) if pattern is not None: globster = Globster([pattern]) for d in self._sub_dirs_cache: if pattern is None or globster.match(d): if abspath: yield os.path.join(self.directory, d) else: yield d