| import os | |
| from typing import Optional | |
| def get_all_files_in_dir( | |
| dir_path: str, recursive: bool = False, file_extension: Optional[str] = None | |
| ): | |
| """Get all files in a directory. Optionally recursively. | |
| Optionally filter by file extension. | |
| :param dir_path: The directory path to search for files. | |
| :param recursive: Whether to search recursively in subdirectories. | |
| :param file_extension: The file extension to filter by (e.g., '.txt'). | |
| :return: A list of file paths. | |
| """ | |
| if not os.path.isdir(dir_path): | |
| raise ValueError(f"{dir_path} is not a directory") | |
| files = [] | |
| for root, _, filenames in os.walk(dir_path): | |
| for filename in filenames: | |
| if file_extension: | |
| if filename.endswith(file_extension): | |
| files.append(os.path.join(root, filename)) | |
| else: | |
| files.append(os.path.join(root, filename)) | |
| if not recursive: | |
| break | |
| return files | |