Имеется отдельный файл с данными.
Имеется переменная со списком строк с данными.
В переменной в списке уже заданы корректные значения.
Читаем файл, перебираем и сравниваем с нашим списком. Если все кол-во совпадений match, то возвращает сообщение ОК. Кол-во требуемое для проверки указываем в входных параметрах при запуске скрипта.
Если найденное совпадение меньше значения n, который указывается как входные данные, то вернуть Alarm либо Ok.
Проблема в том, что алярмы возвращает, но в кол-ве найденных совпадений. Это связано с итерацией. Как вернуть один алярм ? :) Откровенно говоря, мне не нравится какой получился лапша-код.
def creed(path, list_dir, n):
list_dir = set(list_dir) # если list_dir маленький - эту строку можно прибить
with open(path, 'r') as f:
print ('OK', 'NO')[sum(s in list_dir for s in f) < n]
longclaps: Да, символ в символ. В переменной в списке уже заданы корректные значения.
Читаем файл, перебираем и сравниваем с нашим списком. Если все кол-во совпадений match, то возвращает сообщение ОК. Кол-во требуемое для проверки указываем в входных параметрах при запуске скрипта.
Александр: Поскольку вы проявили терпение, вот разбор вашего кода:
def creed(path, list_dir, n):
f = open(path, 'r')
for line in f:
for i in list_dir:
if i in line: # по дальнейшему разговору вышло, что надо if i == line
# а это выглядит, как поиск нескольких подстрок в строке
# if True < n: # вообще-то True == 1,
# print 'OK' # это в целом
# else: # бессмысленный
# print 'NO' # блок
n -= 1 # это - осмысленный
f.close()
print ('OK', 'NO')[n > 0]