• Как записать все "правильные" данные и исключения в логи в Python 3?

    MinTnt
    @MinTnt
    class NotNameError(Exception):
        
        def __init__(self, message, input_data = None):
            self.message = message
            self.input_data = input_data
            
        def __str__(self):
            return self.message
            
    class NotEmailError(Exception):
        
        def __init__(self, message, input_data = None):
            self.message = message
            self.input_data = input_data
            
        def __str__(self):
            return self.message
    
    def read_line(line):
        print(f'{line}')
        split_text = line.split(' ', 2)
        if len(split_text) == 3:
        	name, mail, age = split_text
        else:
            raise ValueError('Пропущено одно или несколько значений')
        try: age = int(age) 
        except ValueError: raise ValueError('Ошибка в значении возраста')
        if age < 10 or age > 99:
                raise ValueError('Недопустимое значение возраста')
        if name.isalpha() == False:
            raise NotNameError('Ошибка имени (Недопустимое значение имени)')
        if '@' not in mail or '.' not in mail:
            raise NotEmailError('Ошибка электронной почты (Недопустимое значение для электронной почты)')
    
        return True
    
    
    good_acc = []
    bad_acc = []
    text = open('registrations_.txt', 'r', encoding="utf-8")
    for line in text.read().splitlines():
        try:
            if read_line(line):
            	good_acc.append(line)
        except Exception as error:
            bad_acc.append(f'{line} | {error}')
    
    with open('registrations_good.log', 'w', encoding='utf-8') as f:
    	f.write('\n'.join(good_acc))
    with open('registrations_bad.log', 'w', encoding='utf-8') as f:
    	f.write('\n'.join(bad_acc))
    Ответ написан
    2 комментария