Где я могу поместить float() или любую строку в числовую функцию в этом цикле потока?
Я пытаюсь открыть какой-нибудь текстовый файл, в котором есть цифры, и указать в нем средние, минимальные и максимальные значения. Моя первая проблема заключается в том, что я не знаю, куда поместить функцию преобразования в цикл. Код следующий:
for i in range(len(numsInFile)):
numofNums += 1
numsInFile = numFile.read()
Куда мне положить, скажем, int()
или же float()
функция в этом цикле?
Редактировать: ОК. По просьбе одного из авторов по этой теме я решил опубликовать весь свой файл.py здесь:
from os import strerror
try:
numFile = open("nums.txt", 'rt')
numofNums = 0
numSum = 0
avgOfSum = 0
minOfNums = 0
maxOfNums = 0
for i in range(len(numsInFile)):
numofNums = len(numFile.readline())
numsInFile[i] = float(numFile.readline().strip())
numFile.close()
resultsFile = open("results.txt", 'wt')
resultsFile.write(numsInFile)
except IOError as IOE:
print("Oh no! A IOError has occurred: ", sterr(e.errno))
2 ответа
Этот ответ предполагает, что файл состоит из одного числа в строке.
Во-первых, вы должны использовать readline()
не read()
, read()
будет пытаться прочитать весь файл одновременно, а не только одну строку за раз.
Затем вы помещаете конверсию вокруг результата этого. Вам также нужно скинуть новую строку.
Вы также перезаписываете список в numsInFile
с одним номером. Вы должны назначить определенный индекс.
Итак, измените строку:
numsInFile = numFile.read()
чтобы:
numsInFile[i] = float(numFile.readline().strip())
Первое, что вам нужно сделать, это решить, как файл будет отформатирован. Вы можете полностью отказаться от цикла, если решите, например, что числа всегда будут разделяться запятой. Тогда вы можете просто сделать:
with open("myFile.txt") as f:
numOfNums = len(f.read().split(","))