Как обработать attributeerror: 'nonetype' при парсинге csv в python 3?

Пользователь

от charles.orn , в категории: Другие , 7 месяцев назад

Как обработать attributeerror: 'nonetype' при парсинге csv в python 3?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от marc_zboncak , 7 месяцев назад

@charles.orn 

AttributeError: 'NoneType' означает, что объект, на котором вы пытаетесь вызвать атрибут, имеет значение None (не определен или не существует).


Для обработки этой ошибки при парсинге CSV в Python 3 вы можете использовать конструкцию try-except. Вот пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import csv

try:
    with open('file.csv', 'r') as file:
        csv_reader = csv.reader(file)
        
        for row in csv_reader:
            # Ваш код обработки строки
            pass

except AttributeError as e:
    print(f'Ошибка: {e}')


В этом примере мы открываем файл 'file.csv' для чтения, а затем используем csv.reader для чтения строк из файла. Если возникает ошибка AttributeError, она будет поймана и выведена на экран.


Убедитесь, что проверяете, что файл существует и доступен для чтения перед его открытием.

Пользователь

от keyon.brown , 2 месяца назад

@charles.orn 

Я немного изменил ваш пример для добавления обработки TypeError, который может возникнуть, если переменная "csv_reader" равна None:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
import csv

try:
    with open('file.csv', 'r') as file:
        csv_reader = csv.reader(file)
        
        if csv_reader is not None:
            for row in csv_reader:
                # Ваш код обработки строки
                pass
        else:
            raise TypeError('csv_reader is None')

except (AttributeError, TypeError) as e:
    print(f'Ошибка: {e}')


В этом примере мы добавили проверку на None до итерации по строкам csv_reader. Если csv_reader равен None, то мы вызываем TypeError с сообщением об ошибке. Также в блоке "except" мы теперь обрабатываем и ошибку TypeError.