Я новичок в python (и в любом смысле) в программировании. Я поиграл с этой проблемой, и вот мое расширенное решение, чтобы неоднократно проверять файл белого списка, чтобы видеть, включены ли белые домены пользователя (по одному за раз). Файл белого списка содержит список доменов (по одному на запись).
Кажется, это работает, но я попал туда методом проб и ошибок. Можно ли сделать это более элегантным, эффективным и «питоническим» образом? Я еще не дошел до проверки ошибок (если это актуально). Любые советы с благодарностью получены.
#!/usr/bin/env python3
# Filename: whitelist.py
domain = 1
match = 0
while domain:
domain = input('Enter a domain or press return to exit: ')
if not domain: # if return is pressed entered then end program
break
with open('whitelist.txt', 'r', encoding='utf-8') as whitelist:
for recd in whitelist:
# if input domain doesn't match record read next record (continue)
if recd.lower().rstrip() != domain.lower():
continue
else: # otherwise if match set match indicator
match = 1
break # after setting indicator stop reading records
if match:
print('Match on domain: ', domain)
else:
print('No match on: ', domain)
После учета комментариев Ларсмана мое новое решение - это, по сути, его решение с небольшим изменением, чтобы все проверки использовали строчные буквы (например, cnn.com == CNN.com):
#!/usr/bin/env python3
# Filename: whitelist.py
with open('whitelist.txt', 'r', encoding='utf-8') as f:
whitelist = set(line.lower().rstrip() for line in f)
while True:
domain = input('Enter a domain or press return to exit: ')
if not domain:
break
if domain.lower() in whitelist:
print('Match on domain: ', domain)
else:
print('No match on: ', domain)