Сначала открытый файл может повторяться только один раз, и ваш код показывает 4 цикла, начинающихся с for line in fh:
. После первого l oop указатель файла достигнет конца файла, и следующие циклы должны немедленно вернуться. По этой причине предпочтительнее использовать with
.
Далее где-то в l oop вы получите значение с плавающей запятой в fnum
. Просто инициализируйте total
перед запуском l oop и добавьте fnum
, когда получите его:
total = 0
with open(fname) as fh:
for line in fh:
if line.startswith("X-DSPAM-Confidence:"):
# print(line)
xpos = line.find(' ')
# print(xpos)
num = line[xpos : ]
# print(float(num))
fnum = float(num)
# print(fnum)
total += fnum
# print(total)
with
гарантирует, что файл будет полностью закрыт в конце l oop.