使用python for循环来获取txt值并计算值的总和

时间:2017-03-17 08:56:15

标签: python for-loop text average typeerror

我的程序在读取txt文件后,可以显示平均值。 首先它是文本文件格式的一部分,它在这里有更多的行。

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__'

似乎无法调用每一行的values。这是值数据类型的问题吗?

2 个答案:

答案 0 :(得分:1)

更多pythonic版本的@klutt代码:

values = [float(stuff[i*5+5] for i in range(0, 100)] 

答案 1 :(得分:0)

您只需重新分配浮点变量值的值。您需要使用数组。

转过来

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])

请注意,这并不一定只能通过复制粘贴完美地工作。我没有详细检查数字,但它显示了基本原理。