使用python for循环获取txt值并计算值之和
我的程序是在读取txt文件后,可以显示平均值。 首先,它是文本文件格式的一部分,这里有更多的行使用python for循环获取txt值并计算值之和,python,for-loop,text,average,typeerror,Python,For Loop,Text,Average,Typeerror,我的程序是在读取txt文件后,可以显示平均值。 首先,它是文本文件格式的一部分,这里有更多的行 Timestamp CounterSamples --------- -------------- 3/15/2017 2:01:44 PM \\ins1617group
Timestamp CounterSamples
--------- --------------
3/15/2017 2:01:44 PM \\ins1617group15s\processor(_total)\% processor time
:
1.38923436719549
3/15/2017 2:01:46 PM \\ins1617group15s\processor(_total)\% processor time
:
0.318628588938252
3/15/2017 2:01:48 PM \\ins1617group15s\processor(_total)\% processor time
:
0.319297841379995
我的代码是首先获取值:
infile = open(cpu_txtfile, 'r')
stuff = infile.readlines()
for i in range(0, 500, 5):
values = float(stuff[i+5])
成功回调每行值和格式如下:
1.3892343672
0.318628588938
0.31929784138
1.26366523362
1.42940775782
0.112588096327
1.24699147593
0.300931193494
1.8688601978
0.2750450877
0.848266656567
1.6158389729
0.0820226675922
0.0
1.45128654463
2.03801885286
我还有一个for循环要计算
for j in range(0, 99):
sum_values = values[j+1]
avg_values = sum_values / 100
print avg_values
它有错误代码
line 139, in cpu_baselineValues
sum_values = values[j+1]
TypeError: 'float' object has no attribute '__getitem__'
似乎无法调用每行的值。这就是值数据类型的问题吗 您只是重新分配浮点变量值的值。您需要改用数组 转这个
for i in range(0, 500, 5):
values = float(stuff[i+5])
像这样的事情
values=zeros(500)
for i in range(0, 100):
values[i] = float(stuff[i*5+5])
请注意,这并不一定只适用于复制粘贴。我没有详细检查这些数字,但它显示了基本原理。更多的@klutt代码的pythonic版本:
values = [float(stuff[i*5+5] for i in range(0, 100)]
您想向OP解释一下您是如何做到这一点的吗?首先感谢您的帮助,在参考您的答案后,我将我的代码更改为:因为我的范围为0,500,5:values=[]values[I]=floatstuff[I+5],但它有一个错误:indexer:list赋值索引超出范围是代码问题还是列表的大小?