File search and file system traversal
- pshell.glob(pathname: str, *, min_results: int = 0, max_results: int | None = None) list[str]
- pshell.glob(pathname: Path, *, min_results: int = 0, max_results: int | None = None) list[Path]
Like
glob.glob()
, but in addition it supports environment variables in pathname, logs the number of results, and incorporates protection from non-existing paths.- Parameters:
pathname – Bash-like wildcard expression. Can be a string or a
pathlib.Path
.min_results (int) – Minimum number of expected results
max_results (int) – Maximum number of expected results. Omit for no maximum.
- Raises:
FileMatchError – If found less results than min_results or more than max_results
- Returns:
List of matching files or directories. The return type of the outputs matches the type of pathname.
- pshell.iglob(pathname: str, *, min_results: int = 0, max_results: int | None = None) Iterator[str]
- pshell.iglob(pathname: Path, *, min_results: int = 0, max_results: int | None = None) Iterator[Path]
Like
glob()
, but returns an iterator instead. Notice that, unlike with glob, you may have time to process some of the results beforeFileMatchError
is raised.In case
max_results
is exceeded, the iteration will stop immediately - which will save time and memory.Example:
>>> for fname in glob("test*.txt", max_results=2): >>> print(fname) FileMatchError: File match test*.txt produced 4 results, expected up to 2 >>> for fname in iglob("test*.txt", max_results=2): >>> print(fname) test1.txt test2.txt FileMatchError: File match test*.txt produced 3 or more results, expected up to 2