#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)