индекс списка вне диапазона при сравнении 2 csv-файлов в python

#python #python-3.x #csv

#питон #python-3.x #csv-файл

Вопрос:

Я хочу сравнить и обновить 2 CSV-файла. Если у file1 дополнительная строка больше, чем у file2, file2 следует обновить.

Вот мой код:

 with open(file1, 'r') as f1, open(file2, 'r') as f2:
    old_file = list(csv.DictReader(f1))
    new_file = list(csv.DictReader(f2))
            
    print(len(old_file)) # It is 20
    print(len(new_file)) # It is 23

    for row in range(len(new_file)):
        if len(old_file) < row :
            if new_file[row]['id'] in old_file[row]:
                print(row)   
 

Этот код выдает ошибку во втором if statement . Если я удалю это и распечатаю информацию о строке, она будет работать просто отлично. Что здесь не так?

Комментарии:

1. old_file[20] не существует, поэтому он выдает ошибки.

2. Да, но как это все равно проходит мимо первого if statement ?

3. Потому 23 > row >= 0 что .

Ответ №1:

Ваше условие — неправильный путь.

 for row in range(len(new_file)):
    if len(old_file) < row :
        if new_file[row]['id'] in old_file[row]:
            print(row)   
 

должно быть

 for row in range(len(new_file)):
    if row < len(old_file):
        if new_file[row]['id'] in old_file[row]:
            print(row)