Untitled
unknown
plain_text
5 months ago
1.6 kB
3
Indexable
Class File: def __init__(self, name, size, timestamp, isDirectory, files): self.name=name self.size=size self.timestamp=timestamp self.isDirectory=isDirectory self.files = files if isDirectory and files else [] class Condition: def matches(self, entity: File): pass # Criterion to check if the filename contains a given substring class NameContainsCriterion(Condition): def __init__(self, substring: str): self.substring = substring def matches(self, entity: File) -> bool: return self.substring in entity.get_name() # Criterion to filter files by minimum size class MinSizeCriterion(Condition): def __init__(self, min_size: int): self.min_size = min_size def matches(self, entity: File) -> bool: return entity.get_size() >= self.min_size def find(directory: File, conditions: List[Condition]) -> List[File]: matching_files = [] # Check if the current directory or file matches the criterion if not directory.isDirectory and matchesAll(conditions,directory): matching_files.append(directory) # If this is a directory, recursively search through its files if directory.isDirectory: for file in directory.files(): res=find(file, criterion) if not res: #not empty, then add matching_files = matching_files + find(file, criterion) return matching_files def matchesAll(criterion: List[Condition], entity:File): for criteria in criterion: if not criteria.matches(file): return False return True
Editor is loading...
Leave a Comment