刚刚一些帮助,因为我是新的python。我有一个文件,它是一个输出文件,通过外部进程不断写入数据。我正在调查这个文件的'x'时间段,并打印输出到屏幕上和/或将它存储在一个列表/字典/元组中(不确定python中适用的是什么)。从二进制输出存储值到列表/字典/元组(Python)
这是我在这个阶段:
timeout = time.time() + args.duration
with open('/dev/input/accel', 'rb') as o:
while time.time() < timeout:
data = o.read(16)
sec, microsec, valtype, axis, axisval = struct.unpack(
'LLHHi', data)
tampertime = float(str(sec) + '.' + str(microsec))
if valtype == 3:
print(tampertime, axis, axisval)
和输出是这样的(从结构):
secs.microsecs, axis, axis value
---------------------------
1478574443.4219799, 0, 4080
1478574443.4219799, 1, 1168
1478574443.4219799, 2, -15408
1478574443.542166, 0, 4016
1478574443.542166, 1, 1104
1478574443.6621571, 0, 4022
1478574443.6621571, 1, 1120
1478574443.6621571, 2, -15404
1478574443.7821031, 0, 4016
1478574443.7821031, 1, 1216
1478574443.7821031, 2, -15430
1478574443.9019749, 0, 4022
1478574443.9019749, 1, 1152
1478574444.2220099, 1, 1148
1478574444.2220099, 2, -15344
注:我刚才添加的逗号更容易阅读。
它打印出其他值,但我只想要valtype == 3
(这是一个列在上面的输出中未显示)的数字。
要快速解释三列,第一列是时间(epoch/unix),第二列是'钥匙',第三列是与钥匙相关的值。你会注意到,如果键值没有改变,它只是从输出中忽略它(我无法解决这个问题,它只是输出文件处理值的方式)。
所以使用上面的输出,我正在寻找这种输出格式。
secs.microsecs, 0, 1, 2
----------------------------------------
1478574443.4219799, 4080, 1168, -15408*
1478574443.542166, 4016, 1104, -15408*
1478574443.6621571, 4022, 1120, -15404
1478574443.7821031, 4016, 1216, -15430*
1478574443.9019749, 4022*, 1152, -15430*
1478574444.2220099, 4022*, 1148, -15344
你会注意到我放置星号旁边的值实际上对应于它们以前的值(上图)。即没有为该时间戳实际提供值,所以它应该只使用存储的先前值。
我已经做了一点搜索,并考虑制作一个结构,但我没有任何运气。
任何帮助将不胜感激。