Я написал функцию-генератор, но обратил внимание, что в моей реализации я не могу быть уверен, что если я открою файл, то он потом закроется, потому что не гарантируется, что генератор достигнет конца своей итерации.
Код: Выделить всё
def gen_reader(file, lookups, stopwords):
is_file = False
try:
if isinstance(file, str):
file = open(file, 'r', encoding='UTF-8')
is_file = True
except FileNotFoundError:
raise FileNotFoundError('File not found')
else:
lookups = list(map(str.lower, lookups))
stop_words = list(map(str.lower, stopwords))
for line in file:
original_line = line
line = line.lower()
if any(lookup in line for lookup in lookups) \
and not any(stop_word in line for stop_word in stop_words):
yield original_line.strip()
if is_file:
file.close()
Каковы ваши идеи, как я могу улучшить свой код, я их рассмотрел.
Подробнее здесь: https://stackoverflow.com/questions/790 ... r-function