我将时间戳作为rrd数据库中的元组返回,即info变量将包含此
[(38177492.733055562, 38177482.886388876),(39370533.190833323,40563588.018611118)]
在我的代码中我将元组(38177492.733055562,38177482.886388876)转换为列表使用 list函数之后,我使用“index”变量访问元素,当我将此值传递给fromtimestamp函数时,它问我“float”值,那么如何将list对象转换为float原始数据类型?以下是整个代码
def hello(request):
info = rrdtool.fetch('hello/test.rrd','AVERAGE','-r','3600','-s','1298264400','-e','1298350800')
datalist = list()
for index in range(0,len(info)):
val = list(info[index])
dt_obj = datetime.fromtimestamp(float(val[index]))
str=dt_obj.strftime("%d-%m-%Y %H:%M:%S")
datalist.append(str)
data = simplejson.dumps(info, indent=4)
return HttpResponse(data,mimetype='application/javascript')
我收到以下错误
a float is required
将代码更改为范围内的索引(0,len(info))后:我收到以下错误
invalid literal for float(): Out
答案 0 :(得分:0)
你所做的事情没有多大意义,我担心 - index
是info
列表的索引,而不是val
的索引,info
是其中之一该列表中的元组。
此外,您无需将列表转换为元组即可访问元组的元素。
您的缩进在循环开始的行中被破坏,并且当您返回json版本的val
时也是如此。
要解决您的问题,您可以先在错误发生前的行上打印val[index]
,type(val[index])
和for val in info:
# I'm not sure if you want both values in the tuple here or just one...
print >> sys.stderr, "val =", val
dt_obj = datetime.fromtimestamp(val[0])
str=dt_obj.strftime("%d-%m-%Y %H:%M:%S")
datalist.append(str)
,以检查它们是否符合您的期望 - 显然他们不是你得到的错误。
此外,您根本不需要将索引用于信息列表,您可以使用以下代码迭代列表中的值:
{{1}}