Python rrdtool.create()

Python rrdtool.create(),python,rrdtool,rrd,Python,Rrdtool,Rrd,我有一个正在尝试创建的RRD数据库,我编写了几个循环来构建命令,该命令运行良好,并生成预期的输出。当我实际尝试在Python中运行rrdtool.create命令时,问题就出现了。此循环生成一个字符串,我们将其称为rrdStr,包含以下内容: '"0x04.rrd", "--step","5", "DS:TEMP:GAUGE:10:0:100", "DS:HUMIDITY:GAUGE:10:0:100", "DS:LIGHT:GAUGE:10:0:1024", "DS:POT:GAUGE:10:

我有一个正在尝试创建的RRD数据库,我编写了几个循环来构建命令,该命令运行良好,并生成预期的输出。当我实际尝试在Python中运行rrdtool.create命令时,问题就出现了。此循环生成一个字符串,我们将其称为
rrdStr
,包含以下内容:

'"0x04.rrd", "--step","5",
"DS:TEMP:GAUGE:10:0:100",
"DS:HUMIDITY:GAUGE:10:0:100",
"DS:LIGHT:GAUGE:10:0:1024",
"DS:POT:GAUGE:10:0:1024",
"RRA:AVERAGE:0.5:1:17142",
"RRA:MIN:0.5:1:17142",
"RRA:MAX:0.5:1:17142",
"RRA:AVERAGE:0.5:12:7200",
"RRA:MIN:0.5:12:7200",
"RRA:MAX:0.5:12:7200",
"RRA:AVERAGE:0.5:60:8640",
"RRA:MIN:0.5:60:8640",
"RRA:MAX:0.5:60:8640",
"RRA:AVERAGE:0.5:360:17532",
"RRA:MIN:0.5:360:17532",
"RRA:MAX:0.5:360:17532"'
据我所知,所有引号和换行符都已正确转义

如果我像这样传递
rrdtool.create
字符串变量:
rrdtool.create(rrdStr)
,我就会得到输出

rrdtool.error: you must define at least one Round Robin Archive
但是,如果我将上述输出直接复制并粘贴到
rrdtool.create()
函数中,它的工作方式与预期的一样,并创建数据库


你知道是什么原因导致的吗?以及如何修复它?

所以我终于找到了答案。您必须创建一个列表,而不是创建一个包含正确格式的所有命令的长字符串,在生成命令时,rrd命令的每一行都会添加到列表中

上述命令变为:

rrdStr = ["0x04.rrd", "--step","5"]
rrdStr += ["DS:TEMP:GAUGE:10:0:100"]
rrdStr += ["DS:HUMIDITY:GAUGE:10:0:100"]
rrdStr += ["DS:LIGHT:GAUGE:10:0:1024"]
rrdStr += ["DS:POT:GAUGE:10:0:1024"]
rrdStr += ["RRA:AVERAGE:0.5:1:17142"]
rrdStr += ["RRA:MIN:0.5:1:17142"]
rrdStr += ["RRA:MAX:0.5:1:17142"]
rrdStr += ["RRA:AVERAGE:0.5:12:7200"]
rrdStr += ["RRA:MIN:0.5:12:7200"]
rrdStr += ["RRA:MAX:0.5:12:7200"]
rrdStr += ["RRA:AVERAGE:0.5:60:8640"]
rrdStr += ["RRA:MIN:0.5:60:8640"]
rrdStr += ["RRA:MAX:0.5:60:8640"]
rrdStr += ["RRA:AVERAGE:0.5:360:17532"]
rrdStr += ["RRA:MIN:0.5:360:17532"]
rrdStr += ["RRA:MAX:0.5:360:17532"]
然后,您可以将该列表作为唯一的命令传递给python2.6 rrdtool-python-1.3.8-6.el6.x86\u 64,之前失败的同一命令将成功运行