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脚本来控制Windows Azure的简单教程
Apr 16 Python
Python3计算三角形的面积代码
Dec 18 Python
Python用 KNN 进行验证码识别的实现方法
Feb 06 Python
python实现周期方波信号频谱图
Jul 21 Python
python实现汉诺塔算法
Mar 01 Python
在Python中关于使用os模块遍历目录的实现方法
Jan 03 Python
在python plt图表中文字大小调节的方法
Jul 08 Python
Python3多线程版TCP端口扫描器
Aug 31 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
Sep 20 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
Feb 28 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
Feb 29 Python
Python Django2 model 查询介绍(条件、范围、模糊查询)
Mar 16 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
html静态页面调用php文件的方法
2014/11/13 PHP
PHP实现的带超时功能get_headers函数
2015/02/10 PHP
Apache无法自动跳转却显示目录的解决方法
2020/11/30 PHP
深入理解PHP JSON数组与对象
2016/07/19 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
javascript的函数
2007/01/31 Javascript
List the Codec Files on a Computer
2007/06/11 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
2016/06/24 Javascript
angularjs 源码解析之scope
2016/08/22 Javascript
JavaScript中Math对象的方法介绍
2017/01/05 Javascript
jQuery Validation Engine验证控件调用外部函数验证的方法
2017/01/18 Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
2017/09/04 Javascript
vue监听scroll的坑的解决方法
2017/09/07 Javascript
如何以Angular的姿势打开Font-Awesome详解
2018/04/22 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
vue+vant使用图片预览功能ImagePreview的问题解决
2020/04/10 Javascript
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
解决vue项目中出现Invalid Host header的问题
2020/11/17 Javascript
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
2019/01/05 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
Python collections.defaultdict模块用法详解
2020/06/18 Python
Django:使用filter的pk进行多值查询操作
2020/07/15 Python
HTML5的结构和语义(5):内嵌媒体
2008/10/17 HTML / CSS
阿根廷首家户外用品制造商和经销商:Montagne
2018/02/12 全球购物
马来西亚在线购物:POPLOOK.com
2019/12/09 全球购物
RealTek面试题
2016/06/28 面试题
毕业生写求职信的要点
2014/03/04 职场文书
社区巾帼文明岗事迹材料
2014/06/03 职场文书
国贸专业求职信
2014/06/28 职场文书
党员批评与自我批评思想汇报(集锦)
2014/09/14 职场文书
酒桌上的开场白
2015/06/01 职场文书