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实现linux服务器批量修改密码并生成execl
Apr 22 Python
Python中的Numpy入门教程
Apr 26 Python
Python 冒泡,选择,插入排序使用实例
Feb 05 Python
Python正则表达式经典入门教程
May 22 Python
Python中xrange与yield的用法实例分析
Dec 26 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
Mar 13 Python
python使用__slots__让你的代码更加节省内存
Sep 05 Python
python生成以及打开json、csv和txt文件的实例
Nov 16 Python
Python3.6中Twisted模块安装的问题与解决
Apr 15 Python
python基本算法之实现归并排序(Merge sort)
Sep 01 Python
matplotlib教程——强大的python作图工具库
Oct 15 Python
python turtle绘图
May 04 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数据类型转换
2014/01/09 PHP
PHP汉字转换拼音的函数代码
2015/12/30 PHP
Yii实现的多级联动下拉菜单
2016/07/13 PHP
php防止sql注入的方法详解
2017/02/20 PHP
phpstorm 正则匹配删除空行、注释行(替换注释行为空行)
2018/01/21 PHP
JS查看对象功能代码
2008/04/25 Javascript
面向对象的Javascript之三(封装和信息隐藏)
2012/01/27 Javascript
js AppendChild与insertBefore用法详细对比
2013/12/16 Javascript
Jquery+asp.net后台数据传到前台js进行解析的方法
2014/05/11 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
在JS方法中返回多个值的方法汇总
2015/05/20 Javascript
jquery easyUI中ajax异步校验用户名
2016/08/19 Javascript
微信小程序input框中加入小图标的实现方法
2018/06/19 Javascript
node.js中ws模块创建服务端和客户端,网页WebSocket客户端
2019/03/06 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
node-red File读取好保存实例讲解
2019/09/11 Javascript
Vue Router中应用中间件的方法
2020/08/06 Javascript
[01:05]主宰至宝剑心之遗
2017/03/16 DOTA
[02:33]DOTA2亚洲邀请赛趣味视频之吐真话筒
2018/03/31 DOTA
python单例模式实例分析
2015/04/08 Python
基于wxpython开发的简单gui计算器实例
2015/05/30 Python
Python及Django框架生成二维码的方法分析
2018/01/31 Python
TensorFlow神经网络优化策略学习
2018/03/09 Python
Pyspider中给爬虫伪造随机请求头的实例
2018/05/07 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
2019/09/17 Python
推荐8款常用的Python GUI图形界面开发框架
2020/02/23 Python
python对execl 处理操作代码
2020/06/22 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
2021/02/22 Python
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
初级Java程序员面试题
2016/03/03 面试题
社区志愿者心得体会
2014/01/03 职场文书
网络研修随笔感言
2014/02/17 职场文书
体育比赛口号
2014/06/09 职场文书
未婚证明书模板
2014/10/08 职场文书
五一放假通知怎么写
2015/08/18 职场文书
python简单验证码识别的实现过程
2021/06/20 Python