Source code for vocalpy.paths

"""Functions for working with paths.
"""

from __future__ import annotations

import pathlib


[docs] def from_dir(dir: str | pathlib.Path, ext: str, recurse: bool = False): """Get all paths with the specified extension from a directory. Searches the directory with the :meth:`pathlib.Path.glob` method. If ``recurse`` is True, a recursive glob is used (by prefixing the search string with double asterisks: ``sorted(dir.glob(f'**/*ext')``. Parameters ---------- dir : str, pathlib.Path The path to the directory. ext : str The file extension to find, e.g. 'wav' or '.wav'. recurse : bool If True, search recursively in sub-directories of ``dir``. Returns ------- paths : list A :class:`list` of :class:`pathlib.Path` instances. Will be empty if no files with the extension were found. """ dir = pathlib.Path(dir) if not dir.is_dir(): raise NotADirectoryError( f"`dir` argument not recognized as a directory: {dir}" ) if recurse: paths = sorted(dir.glob(f"**/*{ext}")) else: paths = sorted(dir.glob(f"*{ext}")) return paths