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实现短网址ShortUrl的Hash运算实例讲解
Aug 10 Python
Python基于numpy灵活定义神经网络结构的方法
Aug 19 Python
selenium+python实现自动登录脚本
Apr 22 Python
好的Python培训机构应该具备哪些条件
May 23 Python
python实现根据指定字符截取对应的行的内容方法
Oct 23 Python
Python基础教程之异常详解
Jan 10 Python
基于python实现百度翻译功能
May 09 Python
Python实现二叉树前序、中序、后序及层次遍历示例代码
May 18 Python
python 直接赋值和copy的区别详解
Aug 07 Python
python如何基于redis实现ip代理池
Jan 17 Python
Python如何把Spark数据写入ElasticSearch
Apr 18 Python
Python3爬虫mitmproxy的安装步骤
Jul 29 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
hessian 在PHP中的使用介绍
2010/12/13 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
PHP6新特性分析
2016/03/03 PHP
PHP getallheaders无法获取自定义头(headers)的问题
2016/03/23 PHP
PHP基于swoole多进程操作示例
2019/08/12 PHP
浅谈Laravel中的三种中间件的作用
2019/10/13 PHP
基于jquery用于查询操作的实现代码
2010/05/10 Javascript
firefox下input type=&quot;file&quot;的size是多大
2011/10/24 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
简单的Jquery全选功能
2013/11/07 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
javascript Array 数组常用方法
2015/04/05 Javascript
jQuery实现的淡入淡出二级菜单效果代码
2015/09/15 Javascript
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
jQuery实现页面顶部下拉广告
2016/12/30 Javascript
Vue2 SSR渲染根据不同页面修改 meta
2017/11/20 Javascript
微信小程序实现的涂鸦功能示例【附源码下载】
2018/01/12 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
laravel-admin 与 vue 结合使用实例代码详解
2019/06/04 Javascript
Vue中实现权限控制的方法示例
2019/06/07 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
[02:21]2018完美盛典章节片——初心
2018/12/17 DOTA
python列表操作实例
2015/01/14 Python
Python时间模块datetime、time、calendar的使用方法
2016/01/13 Python
python pandas 对series和dataframe的重置索引reindex方法
2018/06/07 Python
Django中ajax发送post请求 报403错误CSRF验证失败解决方案
2019/08/13 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
Tensorflow 模型转换 .pb convert to .lite实例
2020/02/12 Python
python识别验证码的思路及解决方案
2020/09/13 Python
HTML5基于flash实现播放RTMP协议视频的示例代码
2020/12/04 HTML / CSS
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
2015年教师新年寄语
2014/12/08 职场文书
超市采购员岗位职责
2015/04/07 职场文书
六年级数学教学反思
2016/02/16 职场文书