# Copyright (C) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # # This work is made available under the Nvidia Source Code License-NC. # To view a copy of this license, check out LICENSE.md """Utils to deal with directories and paths.""" import glob import os def get_immediate_subdirectories(input_dir): """List dirs immediately under input_dir. Args: input_dir (str): Directory to list children of. Returns: (list): List of directory paths relative to input_dir. """ return sorted([name for name in os.listdir(input_dir) if os.path.isdir(os.path.join(input_dir, name))]) def get_recursive_subdirectories(input_dir, ext): """List dirs recursively under input_dir. Args: input_dir (str): Directory to list children of. ext (str): Extension of files expected in this directory. Returns: (list): List of directory paths relative to input_dir. """ lines = glob.glob('%s/**/*.%s' % (input_dir, ext), recursive=True) dirpaths = [os.path.dirname(item) for item in lines] dirpaths = [os.path.relpath(item, input_dir) for item in dirpaths] dirpaths = sorted(list(set(dirpaths))) return dirpaths