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 | |