def __init__(self, path, recursive = True, walker_callback = lambda p, s: None, _copying = False): self._path = absolute_path(path) self._stat_snapshot = {} self._inode_to_path = {} self.is_recursive = recursive if not _copying: stat_info = os.stat(self._path) self._stat_snapshot[self._path] = stat_info self._inode_to_path[stat_info.st_ino] = self._path walker_callback(self._path, stat_info) for root, directories, files in path_walk(self._path, recursive): for directory_name in directories: try: directory_path = os.path.join(root, directory_name) stat_info = os.stat(directory_path) self._stat_snapshot[directory_path] = stat_info self._inode_to_path[stat_info.st_ino] = directory_path walker_callback(directory_path, stat_info) except OSError: continue for file_name in files: try: file_path = os.path.join(root, file_name) stat_info = os.stat(file_path) self._stat_snapshot[file_path] = stat_info self._inode_to_path[stat_info.st_ino] = file_path walker_callback(file_path, stat_info) except OSError: continue
def __init__(self, path, recursive=True, walker_callback=(lambda p, s: None), _copying=False): self._path = absolute_path(path) self._stat_snapshot = {} self._inode_to_path = {} self.is_recursive = recursive if not _copying: stat_info = os.stat(self._path) self._stat_snapshot[self._path] = stat_info self._inode_to_path[stat_info.st_ino] = self._path walker_callback(self._path, stat_info) for root, directories, files in path_walk(self._path, recursive): for directory_name in directories: try: directory_path = os.path.join(root, directory_name) stat_info = os.stat(directory_path) self._stat_snapshot[directory_path] = stat_info self._inode_to_path[stat_info.st_ino] = directory_path walker_callback(directory_path, stat_info) except OSError: continue for file_name in files: try: file_path = os.path.join(root, file_name) stat_info = os.stat(file_path) self._stat_snapshot[file_path] = stat_info self._inode_to_path[stat_info.st_ino] = file_path walker_callback(file_path, stat_info) except OSError: continue