Я только начал питон и у меня есть около 6000 .txt файлов каждый из которых содержит несколько номеров, в колонке, как:Читать номера из многих текстовых файлов и усреднить их Python
file1.txt:
2
43
78
file2.txt:
98
12
and so on
Я хочу, чтобы прочитать их и хранить их в массив и вычислить его среднее значение. Среднего значение (2,43,78,98,12 ..) т.е. все числа из всех файлов должны дать 1 вид Когда я читаю и хранить их, как они выглядят:
['2, 43, 78', '98, 12',..]
... (I избавился от «\ n») Но когда я использую ave = sum(a)\float(len(a))
, я получаю сообщение об ошибке. Что я делаю неправильно? Есть ли что-нибудь, что я пропустил, или еще один способ сделать это?
Код:
import fnmatch
import os
rootPath = 'D:/Data'
pattern = '*.txt'
all_data = []
for root, dirs, files in os.walk(rootPath):
for filename in fnmatch.filter(files, pattern):
#print(filename)
name = os.path.join(root, filename)
str = open(name, 'r').read()
#print str
all_data.append(str)
a=[item.replace('\n', ' ') for item in all_data]
#print a
for val in a:
values = map(float, val.split(", "))
ave = sum(values)/len(values)
print ave
Я получаю сообщение об ошибке:
invalid literal for float()
, пожалуйста, введите код и данные об ошибке –
строки - это не номера, которые вам нужны для запуска их (а не их длина, что является нечетным выбором) один за другим через 'float()' –
@Iabmat: Вам нужно иметь в виду каждый файл отдельно или все файлы? –