2017-03-17 167 views
0

我的程序在读取txt文件后,可以显示平均值。 首先它是文本文件格式的一部分,它在这里有更多的行。使用python for循环来获取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 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的每一行。这是值数据类型的问题吗?

回答

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

请注意,这并不一定完美,只需复制粘贴工作。我没有详细检查数字,但它显示了基本原则。的@klutt代码

+0

你想解释给OP你是如何做到这一点? – abccd

+0

感谢您的帮助,在参考您的答案后,我已经将我的代码更改为:'for i in range(0,500,5): values = [] values [i] = float(stuff [i + 5 ])'但它有一个错误:'IndexError:列表分配索引超出范围'是代码问题还是列表大小? –

1

更Python版本:

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