2017-03-17 168 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)]