Spaces:
Running
Running
| import pathlib | |
| import shutil | |
| from pathlib import Path | |
| from typing import List, Union | |
| from finetrainers.logging import get_logger | |
| logger = get_logger() | |
| def find_files(root: str, pattern: str, depth: int = 0) -> List[str]: | |
| root_path = pathlib.Path(root) | |
| result_files = [] | |
| def within_depth(path: pathlib.Path) -> bool: | |
| return len(path.relative_to(root_path).parts) <= depth | |
| if depth == 0: | |
| result_files.extend([str(file) for file in root_path.glob(pattern)]) | |
| else: | |
| for file in root_path.rglob(pattern): | |
| if not file.is_file() or not within_depth(file.parent): | |
| continue | |
| result_files.append(str(file)) | |
| return result_files | |
| def delete_files(dirs: Union[str, List[str], Path, List[Path]]) -> None: | |
| if not isinstance(dirs, list): | |
| dirs = [dirs] | |
| dirs = [Path(d) if isinstance(d, str) else d for d in dirs] | |
| logger.debug(f"Deleting files: {dirs}") | |
| for dir in dirs: | |
| if not dir.exists(): | |
| continue | |
| shutil.rmtree(dir, ignore_errors=True) | |
| def string_to_filename(s: str) -> str: | |
| return ( | |
| s.replace(" ", "-") | |
| .replace("/", "-") | |
| .replace(":", "-") | |
| .replace(".", "-") | |
| .replace(",", "-") | |
| .replace(";", "-") | |
| .replace("!", "-") | |
| .replace("?", "-") | |
| ) | |