Чтобы ответить на ваш вопрос, насколько я понимаю, в трех частях:
Как прочитать файл в
в вашем примере вы используете
infile.read ()
, который считывает все содержимое файла в строку и переносит вас в конец файла. Поэтому следующее
infile.readlines ()
больше ничего не будет читать. Вы должны опустить первое чтение ().
Как вычислить среднее значение
Есть много способов сделать это в Python - более или менее элегантно - и, я думаю, это зависит от того, в чем именно заключается проблема. Но в простейшем случае вы можете просто суммировать и считать значения по ходу, а затем делить сумму на счет в конце, чтобы получить результат:
infile = open("d.dat", "r")
total = 0.0
count = 0
for line in infile.readlines():
print ("reading in line: ",line)
try:
line_value = float(line)
total += line_value
count += 1
print ("value = ",line_value, "running total =",total, "valid lines read = ",count)
except:
pass #skipping non-numeric lines or characters
infile.close()
Попытка / исключение используется только в том случае, если в файле есть строки или символы, которые нельзя преобразовать в числа с плавающей точкой, они будут пропущены.
Как записать в файл .dat
Наконец, вы, похоже, спрашиваете, как записать результат обратно в файл d.dat. Не уверен, действительно ли вам нужно это сделать, должно быть приемлемо просто отобразить результат, как в приведенном выше коде. Однако, если вам нужно записать его обратно в тот же файл, просто закройте его после чтения из него, снова откройте его для записи (в режиме 'append', чтобы вывод шел до конца файла), и выведите результат, используя write ( ).
outfile = open("d.dat","a")
outfile.write("\naverage = final total / number of data points = " + str(total/count)+"\n")
outfile.close()