Эта строка
scores = list(int(d['score']) for d in ldap_data)
потребляет все данные в ldap_data
. ldap_data
- это итератор, управляемый базовыми данными в файле ldap_file
. Когда вы выполняете итерацию по ldap_data
, базовый файл ldap_file
используется.
То есть ldap_data
пусто, когда достигает for-loop
.
for rows in ldap_data:
Одним из способов решения этой проблемы является создание ldap_data
списка:
ldap_data = list(csv.DictReader(ldap_file))
Другой способ обойти это - сказать ldap_file
снова прочитать с начала:
scores = list(int(d['score']) for d in ldap_data)
...
ldap_file.seek(0)
...
for rows in ldap_data: