循环遍历目录中的多个rrd文件

时间:2018-02-13 07:42:52

标签: python export-to-csv cacti

我需要遍历给定目录中的所有 .rrd 文件并在每个rrd数据库中获取数据并执行一些操作并将它们导出到python脚本中的单个csv文件中!

如何以有效的方式完成?我可以建议如何在多个文件上循环和访问数据库数据吗?

1 个答案:

答案 0 :(得分:0)

我假设你的系统上已经有一个带有python绑定的rrdtool安装。如果没有,here是安装说明。

然后,循环遍历给定目录中的.rrd个文件并执行提取:

import os
import rrdtool

target_directory = "some/directory/with/rrdfiles"
rrd_files = [os.path.join(target_directory, f) for f in os.listdir(target_directory) if f.endswith('.rrd')]
data_container = []
for rrd_file in rrd_files:
    data = rrdtool.fetch(rrd_file, 'AVERAGE'  # or whichever CF you need
        '--resolution', '200',                # for example
    )                                         # and any other settings you need
    data_container.append(data)

参数列表在rrdfetch之后。

rrd_files循环中获得所需的任何数据后,应将其累积到列表列表中,每个子列表都是一行数据。将它们写入csv就像这样简单:

import csv

# read the .rrd data as above into a 'data_container' variable

with open('my_data.csv', 'w', newline='') as csv_file:
    rrd_writer = csv.writer(file)
    for row in data_container:
        rrd_writer.writerow(row)

这应该概述您必须遵循的一般步骤,您可能需要对它们进行调整(特别是rrdfetch)。