Python:打开文件,读取行到列表,处理列表数据

1 投票
3 回答
884 浏览
提问于 2025-04-15 22:23

我想处理文件 "output.log" 中的数据,然后把这些数据放到 graphdata['eth0'] 里。

我已经做到这一点了,但它只处理了第一行:

logread = open("output.log", "r").readlines()
for line in logread:
        print "line", line
        i = line.rstrip("\n")
        b = float(i)
        colors = [ (0.2, 03, .65), (0.5, 0.7, .1), (.35, .2, .45), ]
        graphData = {}
        graphData['eth0'] = [b]
        cairoplot.dot_line_plot("./blog", graphData, 500, 500, axis=True, grid=True, dots=True, series_colors=colors)

3 个回答

0

我不太确定,但看起来你每次都在重新初始化这个数组。你能不能把它一次性放进一个大列表里呢?

0

在编程中,有时候我们会遇到一些问题,可能会让我们感到困惑。比如,有人可能在使用某个工具或者库的时候,发现它的某些功能没有按照预期工作。这时候,大家通常会去网上查找解决方案,像在StackOverflow这样的论坛上提问。

在这些讨论中,其他程序员会分享他们的经验和解决办法,帮助提问者找到问题的根源。有时候,问题可能是因为代码中的小错误,或者是对某个功能的理解不够深入。

总之,编程的过程中,遇到问题是很正常的,重要的是要学会如何寻找答案和解决方案。

logread = open("output.log", "r").readlines()
for line in logread:
        print "line", line
        i = line.rstrip("\n")
        b = float(i)
        colors = [ (0.2, 03, .65), (0.5, 0.7, .1), (.35, .2, .45), ]
        graphData = {}
        graphData['eth0'] = [b]
        cairoplot.dot_line_plot("./blog", graphData, 500, 500, axis=True, grid=True, dots=True, series_colors=colors)
0
graphData = {}

我觉得这应该是个字典。你是这个意思吗?

如果你想要一个列表或者数组,可以用 [] 来代替 {}。之前有人说的没错。每次循环的时候,你都在把 graphData 设为 {},这样就会把之前的内容覆盖掉。

array.append(x)

会把某些东西添加到一个数组里。

如果你想在最后把所有的行都显示出来,可以在循环之前设置 graphData = [] 这样。然后在每次循环中执行

graphData.append(line).  

然后在循环结束后,你可以设置 graph_data_dict = {} graph_data_dict['eth0'] = graph_data_array

撰写回答