Python 如何实时储存下位机发送的数据,数据要发送一天

2020-03-20 13:23:39 +08:00
 cherishxyn
python 如何实时储存下位机发送的数据,因为可能下位机要工作一天,不停的通过串口发送工作参数,本来想着储存成 excel,这样以后用的时候打开 excel 分析就行了,但是不是储存数据多,每次存储必须要打开 excel,这样的话会卡吗,有没有什么储存的方式比较快捷,有没有可能不打开 excel 追加存储,或者其他存储方式,

新手诚心请教,因为自己做下位机,很多时候只通过串口不是很方便,于是,就想着自己用 python+pyqt 做个界面,以后自己可以通用。
3801 次点击
所在节点    Python
37 条回复
iceecream
2020-03-20 17:55:52 +08:00
csv 不香吗,既可以 tail、cat、awk 当文本打开,也可以走 excel
Vegetable
2020-03-20 18:05:20 +08:00
csv,sqlite 这两个。
别 Excel,Excel 行数有上限,一百多万行。.xls 只有 65535 行。操作 Excel 也需要更多内存,速度会比想象的慢,OOM 也来的更早。
littlewing
2020-03-20 18:06:54 +08:00
sqlite
shm7
2020-03-20 19:34:01 +08:00
没吃过没看过很多日志采用滚动记录的方式么,每个日志文件设定上限 size… 数字的话当文本存 txt csv flush 一下 多写几个 try catch
ackoly
2020-03-20 19:40:26 +08:00
csv 加 pandas 不香吗
bitdust
2020-03-20 20:13:05 +08:00
python 内置的 log 库,很香的。
1.自定义格式
2.做滚动存储
3.远程存储
4.自动打时间戳
sintrb
2020-03-20 21:53:47 +08:00
用 csv 吧,csv 有个好处是格式简单,能够直接用 excel 打开。
用追加模式打开 csv 文件,不停的往里面写入数据就行,写了之后 flush 一下,防止掉电丢失,类似下面的:

import time, random, datetime, io
def read():
return random.random()
with io.open('/tmp/t.csv', 'a', encoding='utf8') as f:
while True:
v = read()
l = '%f,%f\n' % (time.time(), v)
if type(l) != type(u''):
l = l.decode('utf8')
f.write(l)
f.flush()
time.sleep(1)
sintrb
2020-03-20 21:59:16 +08:00
@sintrb 把下划线换成空格
sintrb
2020-03-20 21:59:50 +08:00
@sintrb 把下划线换成空格

import time, random, datetime, io

def read():
__return random.random()

with io.open('/tmp/t.csv', 'a', encoding='utf8') as f:
__while True:
____v = read()
____l = '%f,%f\n' % (time.time(), v)
____if type(l) != type(u''):
______l = l.decode('utf8')
____f.write(l)
____f.flush()
____time.sleep(1)
cherishxyn
2020-03-21 08:56:34 +08:00
@sintrb 非常有用,谢谢,就用这个方式了。后面我继续学习数据库,到时候再从新做一个。楼上很多人说的非常实用,感谢,学习很多
cherishxyn
2020-03-21 08:57:39 +08:00
@Vegetable 学习了,感谢
cherishxyn
2020-03-21 08:58:24 +08:00
@bitdust 这个对我来说是新东西,我会去查看的,谢谢回复
cherishxyn
2020-03-21 09:02:04 +08:00
我还有个问题想问下,就是大家回复的对我很有帮助,我是否有必要在下面一一回复感谢,回复多了,整个页面很多客套话,后来人也不便阅读,不回复显得不礼貌,该怎么办呢
jianghu52
2020-03-21 12:47:58 +08:00
@cherishxyn 你可以最后回帖的时候 @一圈人,感谢一下就行了.另外,如果可能的话,最好把你最后修改之后的结果也贴上来,这样很多人还会帮你看看哪里还有不足.
cherishxyn
2020-03-23 12:31:02 +08:00
@jianghu52 好的,我现在最开始构思的,估计还要一段时间做出来,谢谢
cherishxyn
2020-03-23 12:33:06 +08:00
@sintrb
@bitdust
@ackoly
@shm7
@Vegetable
@iceecream
@qile1
@ipwx
@loading
@loading
@ipwx
@bearqq

谢谢各位,刚知道,可以统一感谢
loading
2020-03-23 13:38:03 +08:00
@cherishxyn 每层楼都有一个空心的爱心,点一下。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/654554

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX