我今天花了很多时间与这个人搏斗 - 我正在从串口服务器设备(通过套接字模块)读取数据。数据进入正常状态,我正在尝试对其进行简单的字符串处理(确认正确的数据块大小),然后再添加时间戳并将完整的块放入字典中,并将时间戳作为键。这是代码:
for i in range(0, (len(rawData)+1)):
if len(rawData[i]) == 57:
ss2000_data[str(time.time())] = (rawData[i].split(', '))
print ss2000_data
else: continue
字典处理正常,因为我得到一个有效的密钥:值对 - 一次!循环部分不起作用,所以不管我收到多少串行数据,我只会得到一个键:值对。
我已经在这里扫描了问题,也在Python.org论坛上,并且还浏览了文档“学习Python”,“Python Pocket Ref”和python.org上的Python教程,但我没有得到任何地方。我也是Python的亲戚。我很欣赏任何有关潜在信息来源的建议或指示。 在此先感谢,非常感谢
答案 0 :(得分:1)
(我假设rawData包含来自串行连接的一些行/数据报。)
time.time()
无法保证提供一秒的分数。您可能处理得太快,time.time()
无法提供除初始值以外的任何内容。尝试将str(i)
添加到您用于存储拆分数据的密钥,或使用另一个密钥(可能来自i
),保证每个循环都会更改。
答案 1 :(得分:1)
如果你只打印了一个条目,那意味着rawData中只有一个长度为57的条目,对吗?
稍微清理一下代码,并添加一些调试。保持简单,接近你所拥有的:
for block in rawData:
print 'Block,len=%d' % (len(block),)
if len(block) == 57:
ss2000_data[str(time.time())] = (block.split(', '))
print ss2000_data
如果您期望rawData中有超过1个长度为57的条目,那么您确定“数据是否正常”?