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编辑器WingIDE的使用经验总结
Aug 31 Python
Python 描述符(Descriptor)入门
Nov 20 Python
Python排序搜索基本算法之归并排序实例分析
Dec 08 Python
Python3 中文文件读写方法
Jan 23 Python
python:pandas合并csv文件的方法(图书数据集成)
Apr 12 Python
Python 在字符串中加入变量的实例讲解
May 02 Python
python3基于TCP实现CS架构文件传输
Jul 28 Python
Django 限制用户访问频率的中间件的实现
Aug 23 Python
python3通过selenium爬虫获取到dj商品的实例代码
Apr 25 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
Aug 09 Python
基于Python3.6中的OpenCV实现图片色彩空间的转换
Feb 03 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
Apr 07 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中json_encode、json_decode与serialize、unserialize的性能测试分析
2010/06/09 PHP
php中heredoc与nowdoc介绍
2014/12/25 PHP
浅谈PHP各环境下的伪静态配置
2019/03/13 PHP
科讯商业版中用到的ajax空间与分页函数
2007/09/02 Javascript
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
js给onclick事件赋值,动态传参数实例解说
2013/03/28 Javascript
jquery遍历select元素(实例讲解)
2013/12/31 Javascript
javascript中with()方法的语法格式及使用
2014/08/04 Javascript
JavaScript中的继承方式详解
2015/02/11 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
react-native 完整实现登录功能的示例代码
2017/09/11 Javascript
vue.js,ajax渲染页面的实例
2018/02/11 Javascript
解决webpack无法通过IP地址访问localhost的问题
2018/02/22 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
JS面向对象编程基础篇(一) 对象和构造函数实例详解
2020/03/03 Javascript
详解datagrid使用方法(重要)
2020/11/06 Javascript
用smtplib和email封装python发送邮件模块类分享
2014/02/17 Python
python常用web框架简单性能测试结果分享(包含django、flask、bottle、tornado)
2014/08/25 Python
python opencv 直方图反向投影的方法
2018/02/24 Python
Python爬虫实现爬取百度百科词条功能实例
2019/04/05 Python
Python3 集合set入门基础
2020/02/10 Python
python爬虫实例之获取动漫截图
2020/05/31 Python
详解Python 最短匹配模式
2020/07/29 Python
python爬虫多次请求超时的几种重试方法(6种)
2020/12/01 Python
python数据抓取3种方法总结
2021/02/07 Python
基于CSS3实现的漂亮Menu菜单效果代码
2015/09/10 HTML / CSS
佳能德国网上商店:Canon德国
2017/03/18 全球购物
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
护理职业应聘自荐书
2013/09/29 职场文书
人事任命书范文
2014/06/04 职场文书
护士年终考核评语
2014/12/31 职场文书
大连导游词
2015/02/12 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery
浅谈MySQL函数
2021/10/05 MySQL