python numpy实现多次循环读取文件 等间隔过滤数据示例


Posted in Python onMarch 14, 2020

numpy的np.fromfile会出现如下的问题,只能一次性读取文件的内容,不能追加读取,连续两次的np.fromfile读到的东西一样

如果数据文件太大(几个G或以上)不能一次性全读进去,需要追加读取

python numpy实现多次循环读取文件 等间隔过滤数据示例

而我希望读到的donser1和donser2是连续的两段

(实际使用时,比如说读取的文件是二进制数据文件,每一块文件都包括包头+数据,希望将这两块分开获取,然后再做进一步处理)

代码:

import numpy as np

length=2500
plt_arr=np.linspace(0.0, 0.0, length*2048*16)
start=0
tail_size = 40  #40bit
num_size=16*1024-40 # 16kb -40b


def one_file(f, loop):
  global tail_size, num_size
  while loop:
    num = np.fromfile(f, dtype=np.int16, count=num_size)
    tail=np.fromfile(f, dtype=np.int16, count=tail_size)
    loop=loop-1
    yield num, tail

def main():
  file_path="E://1-gl300c.r3f"
  global length, plt_arr, start
  loop=length
  with open(file_path, 'rb') as f:
    for num, tail in one_file(f, loop):
      plt_arr[start:start+len(num)]=num[:]
      start=start+len(num)
  return   plt_arr[0:start]

if __name__ == "__main__":
  donser=main()
  print(donser)

假设数据文件的格式是 数据+包尾,plt_arr存储全部的数据部分,包尾丢弃,该方法实现了多次连续追加读取数据文件的内容plt_arr最好使用先开好大小再逐次赋值,亲测append方法和concatenate方法时间效率极差或者不用numpy也可以,代码:

def read_in_chunks(filePath, chunk_size=16*1024):
  file_object = open(filePath,'rb')
  count=0
  while True:
    chunk_data = file_object.read(chunk_size)
    if not chunk_data:
      break
    yield chunk_data[0:16*1024-28]


if __name__ == "__main__":
  num=0
  for chunk in read_in_chunks("E:\\1-gl300c.r3f"):
    #process(chunk) # <do something with chunk>
    name=str(num)+".bin"
    num=num+1
    if num<303000:
      continue
    if num>308001:
      break
    file_object = open(name, 'wb')
    file_object.write(chunk)
    file_object.close( )

numpy.fromfile的其他方法可以参考这个

补充知识:python每隔一段时间运行一个函数

用python语言每隔两分钟从接口获取一次数据来插入到数据库

看了大佬们的方法感觉最简单就是:

做一个死循环,让函数执行完后休眠两分钟,然后进入下一次执行,除非手动停止或者有错误停止,否则程序会永远运行下去。

以下是代码:

import get_details
import time

second=2*60
print second
while True:
get_details.sign_cycle()
time.sleep(second)

上面的代码就是让get_details模块的sign_cycle()函数每两分钟执行一次。

是不是超简单!!!!!!

以上这篇python numpy实现多次循环读取文件 等间隔过滤数据示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python的迭代器、生成器以及相关的itertools包
Apr 02 Python
简单介绍Python中的filter和lambda函数的使用
Apr 07 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
Dec 31 Python
python 类详解及简单实例
Mar 24 Python
Python机器学习logistic回归代码解析
Jan 17 Python
python在线编译器的简单原理及简单实现代码
Feb 02 Python
Django unittest 设置跳过某些case的方法
Dec 26 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
解决Jupyter NoteBook输出的图表太小看不清问题
Apr 16 Python
安装pyecharts1.8.0版本后导入pyecharts模块绘图时报错: “所有图表类型将在 v1.9.0 版本开始强制使用 ChartItem 进行数据项配置 ”的解决方法
Aug 18 Python
python判断变量是否为列表的方法
Sep 17 Python
Django框架之路由用法
Jun 10 Python
python matplotlib 绘图 和 dpi对应关系详解
Mar 14 #Python
python 工具 字符串转numpy浮点数组的实现
Mar 14 #Python
python tkinter GUI绘制,以及点击更新显示图片代码
Mar 14 #Python
使用Python爬取弹出窗口信息的实例
Mar 14 #Python
解决django中form表单设置action后无法回到原页面的问题
Mar 13 #Python
浅谈在django中使用redirect重定向数据传输的问题
Mar 13 #Python
在Django中预防CSRF攻击的操作
Mar 13 #Python
You might like
十天学会php之第十天
2006/10/09 PHP
提升PHP速度全攻略
2006/10/09 PHP
一个PHP分页类的代码
2011/05/18 PHP
thinkphp微信开发(消息加密解密)
2015/12/02 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
javascript一个无懈可击的实例化XMLHttpRequest的方法
2010/10/13 Javascript
JS实现超简单的鼠标拖动效果
2015/11/02 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
JS简单获取及显示当前时间的方法
2016/08/03 Javascript
巧用jQuery选择器提高写表单效率的方法
2016/08/19 Javascript
jQuery插件Echarts实现的双轴图效果示例【附demo源码下载】
2017/03/04 Javascript
微信小程序 动态绑定数据及动态事件处理
2017/03/14 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
layui时间控件选择时间范围的实现方法
2019/09/28 Javascript
解决$store.getters调用不执行的问题
2019/11/08 Javascript
js 计数排序的实现示例(升级版)
2020/01/12 Javascript
Vue Object 的变化侦测实现代码
2020/04/15 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
python数据封装json格式数据
2018/03/04 Python
用TensorFlow实现多类支持向量机的示例代码
2018/04/28 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
python 实现return返回多个值
2019/11/19 Python
Python实现投影法分割图像示例(二)
2020/01/17 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
2020/06/22 Python
Python 解析简单的XML数据
2020/07/24 Python
英国婚礼商城:Wedding Mall
2019/11/02 全球购物
大学毕业感言
2014/01/10 职场文书
幼教简历自我评价
2014/01/28 职场文书
奥巴马经典演讲稿
2014/09/13 职场文书
2014年防汛工作总结
2014/12/08 职场文书
冬季作息时间调整通知
2015/04/24 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书
解析目标检测之IoU
2021/06/26 Python
php去除数组中为0的元素的实例分析
2021/11/17 PHP
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA