使用Python循环来获取文本数值并计算数值总和

2024-10-01 09:22:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我的程序是读取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。这就是值数据类型的问题吗


Tags: infortime格式rangecpufloatprocessor
2条回答

@klutt代码的更多pythonic版本:

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

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

把这个转过来

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

请注意,这并不一定是完美的工作只是复制粘贴。我没有详细核对数字,但它显示了基本原则

相关问题 更多 >