Untitled
unknown
plain_text
a year ago
1.6 kB
11
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 TrueEditor is loading...
Leave a Comment