def process(filename): """ main processing loop, read the supplied file line by line, counting domains :param filename: :return domain_results: """ domain_results = Domains() with open(filename, 'r') as emails: try: for line in emails: email = EmailAddress(line) domain_results.add_domain(email) except UnicodeDecodeError as e: logging.warning("File: {} non-unicode characters {}".format(filename, e)) except Exception as e: logging.error(e) return domain_results