Python:批量读取大量数据并发送json

2024-03-28 20:26:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我对JSON和Python对象有点困惑,我读了很多Python字典,但仍然没有找到答案。我有一个树莓皮传感器读取压力。我想批量读取一些数据并发送到MQTT服务器。我希望数据的输出看起来像:

{'pressure': 2, 'time': 1529923890.237}
{'pressure': 5, 'time': 1529923890.247}
{'pressure': 9, 'time': 1529923890.258}
{'pressure': 2, 'time': 1529923890.268}
{'pressure': 6, 'time': 1529923890.278}
{'pressure': 2, 'time': 1529923890.288}

我的示例代码是:

import json
import time
from decimal import Decimal

count = 0
read_pressures = {}
while (count < 100):
    current_time=time.time()
    data = dict(pressure=2,time=current_time)
    time.sleep(0.01)
    count = count + 1
    print( data) #
    read_pressures = data
print ("printing all values")
print(read_pressures)

我只得到最后一个值。最好的做法是将所有项放入字典,然后转换为json,还是直接将其转换为json格式的字符串?你知道吗


Tags: 数据对象答案importjsonreaddata字典
3条回答

这实际上取决于您需要如何发送数据。循环的每一次都会覆盖read_pressures。你知道吗

import json
import time
from decimal import Decimal

count = 0
read_pressures = []
while (count < 100):
    current_time=time.time()
    data = dict(pressure=2,time=current_time)
    time.sleep(0.01)
    count = count + 1
    print(data) #
    read_pressures.append(data)
print ("printing all values")
print(read_pressures)

你的代码有两个问题。你知道吗

read_pressures = {}

创建一个字典,但是你有一个项目列表, 所以一份清单更适合你的目的

read_pressures = []

另一个问题是

read_pressures = data

每次只需重新分配read_pressures的值,但需要收集datadict,所以

read_pressures.append(data)

会给你带来想要的结果。你知道吗

我改进了你的代码:

import pprint
import time
from datetime import datetime

read_pressures = list()
for _ in range(100):
    current_time = datetime.now().strftime('%Y-%m-%dT%H:%M:%S')
    data = dict(pressure=2, time=current_time)
    time.sleep(0.01)
    read_pressures.append(data)

pprint.pprint(read_pressures)

相关问题 更多 >