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根据距离和时长计算配速示例
Feb 16 Python
Python使用MONGODB入门实例
May 11 Python
python使用wmi模块获取windows下硬盘信息的方法
May 15 Python
Python运算符重载用法实例分析
Jun 01 Python
浅析Python中的for 循环
Jun 09 Python
用python与文件进行交互的方法
Mar 01 Python
python实现NB-IoT模块远程控制
Jun 20 Python
pandas使用apply多列生成一列数据的实例
Nov 28 Python
Python实现八皇后问题示例代码
Dec 09 Python
python实现可变变量名方法详解
Jul 01 Python
如何通过python实现全排列
Feb 11 Python
使用Djongo模块在Django中使用MongoDB数据库
Jun 20 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/02/14 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
2014/02/18 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
PHP基于新浪IP库获取IP详细地址的方法
2017/05/04 PHP
详解PHP发送邮件知识点
2018/05/06 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
2019/04/09 PHP
Jquery跳到页面指定位置的方法
2014/05/12 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
JavaScript DOM元素尺寸和位置
2015/04/13 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
JavaScript和jquery获取父级元素、子级元素、兄弟元素的方法
2016/06/05 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
在html中引入外部js文件,并调用带参函数的方法
2016/10/31 Javascript
原生ajax处理json格式数据的实例代码
2016/12/25 Javascript
jQuery html表格排序插件tablesorter使用方法详解
2017/02/10 Javascript
js正则表达式验证密码强度【推荐】
2017/03/03 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
小程序卡片切换效果组件wxCardSwiper的实现
2020/02/13 Javascript
在Python中操作列表之list.extend()方法的使用
2015/05/20 Python
flask中过滤器的使用详解
2018/08/01 Python
python实现根据指定字符截取对应的行的内容方法
2018/10/23 Python
Python实现的矩阵转置与矩阵相乘运算示例
2019/03/26 Python
浅析python 中大括号中括号小括号的区分
2019/07/29 Python
Python实现快速排序的方法详解
2019/10/25 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
virtualenv介绍及简明教程
2020/06/23 Python
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
世界上最大的在线汽车租赁预订平台:Rentalcars.com(支持中文)
2018/10/12 全球购物
路德维希•贝克(LUDWIG BECK)中文官网:德国大型美妆百货
2020/09/19 全球购物
北京RT科技有限公司.net工程师面试题
2013/02/15 面试题
企业后勤岗位职责
2014/02/28 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
明星员工获奖感言
2014/08/14 职场文书
交通事故和解协议书
2014/09/25 职场文书