首页 > 解决方案 > 脚本错误:ValueError:解包的值太多

问题描述

我希望下面的 python 脚本在执行到我的 InfluxDB 时发送数据。

但是当我执行脚本时,我收到一条错误消息“ValueError:解包的值太多”。我究竟做错了什么?

if __name__ == "__main__":

import time

#foo = kamstrup()
foo = kamstrup(serial_port="/dev/ttyAMA0", baud_rate=1200)

for i in kamstrup_MC601_var:
    x,u = foo.readvar(i)
    print("%-25s" % kamstrup_MC601_var[i], x, u)

    import requests
    url_string = 'http://192.168.0.11:8086/write?db=test_kamstrup'
    data_string = 'kamstrup_script,host=server01,region=us-west value={' + kamstrup_MC601_var[i], x, u + '}'

    r = requests.post(url_string, data=data_string)

标签: python

解决方案


错误可能从这里上升;

x,u = foo.readvar(i)

您没有提供足够的分配器来分配数据

例如:

>>> a=[1,2,3]
>>> x,y = a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack (expected 2)

您可以通过为分配提供确切数量的变量或使用以下方法来解决此问题:

x, *u = foo.readvar(i)

这将获得第一个并分配给x,其余的将u作为列表分配给。


推荐阅读