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显示进度条的方法
Sep 20 Python
python各种语言间时间的转化实现代码
Mar 23 Python
Python实现将通信达.day文件读取为DataFrame
Dec 22 Python
在Python中调用Ping命令,批量IP的方法
Jan 26 Python
Python3.5面向对象与继承图文实例详解
Apr 24 Python
python 列表推导式使用详解
Aug 29 Python
python实现获取单向链表倒数第k个结点的值示例
Oct 24 Python
new_zeros() pytorch版本的转换方式
Feb 18 Python
Python处理mysql特殊字符的问题
Mar 02 Python
python线性插值解析
Jul 05 Python
Django修改app名称和数据表迁移方案实现
Sep 17 Python
python3处理word文档实例分析
Dec 01 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 利用AJAX获取网页并输出的实现代码(Zjmainstay)
2012/08/31 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
2015/11/18 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
PHP如何实现跨域
2016/05/30 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
Laravel使用消息队列需要注意的一些问题
2017/12/13 PHP
如何使用jQuery Draggable和Droppable实现拖拽功能
2013/07/05 Javascript
javascript中this的四种用法
2015/05/11 Javascript
纯js实现无限空间大小的本地存储
2015/06/18 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
2015/09/14 Javascript
利用Javascript实现BMI计算器
2016/08/16 Javascript
javascript 中的事件委托详解
2016/10/25 Javascript
JS树形菜单组件Bootstrap TreeView使用方法详解
2016/12/21 Javascript
AngularJS遍历获取数组元素的方法示例
2017/11/11 Javascript
Vue Promise的axios请求封装详解
2018/08/13 Javascript
Three.JS实现三维场景
2018/12/30 Javascript
vue实现动态按钮功能
2019/05/13 Javascript
如何使用CSS3和JQuery easing 插件制作绚丽菜单
2019/06/18 jQuery
小程序实现锚点滑动效果
2019/09/23 Javascript
JavaScript变量Dom对象的所有属性
2020/04/30 Javascript
手把手教你实现 Promise的使用方法
2020/09/02 Javascript
python判断给定的字符串是否是有效日期的方法
2015/05/13 Python
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
TensorFlow实现随机训练和批量训练的方法
2018/04/28 Python
python使用__slots__让你的代码更加节省内存
2018/09/05 Python
pandas 数据归一化以及行删除例程的方法
2018/11/10 Python
记一次python 内存泄漏问题及解决过程
2018/11/29 Python
Python更新所有已安装包的操作
2020/02/13 Python
Python利用命名空间解析XML文档
2020/08/10 Python
英国豪华家具和家居用品购物网站:Teddy Beau
2020/10/12 全球购物
2013年保送生自荐信格式
2013/11/20 职场文书
大学生自我鉴定评语
2014/01/27 职场文书
餐饮业员工工作决心书
2014/03/11 职场文书
网络工程专业自荐信范文
2014/03/16 职场文书
感恩寄语大全
2014/04/11 职场文书
python获取对象信息的实例详解
2021/07/07 Python