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 字符串格式化代码
Mar 17 Python
在Python 3中实现类型检查器的简单方法
Jul 03 Python
剖析Python的Tornado框架中session支持的实现代码
Aug 21 Python
Python 实现一行输入多个值的方法
Apr 21 Python
详解Django解决ajax跨域访问问题
Aug 24 Python
python爬取网易云音乐评论
Nov 16 Python
Django模型序列化返回自然主键值示例代码
Jun 12 Python
Python3内置模块之base64编解码方法详解
Jul 13 Python
如何使用Python破解ZIP或RAR压缩文件密码
Jan 09 Python
基于Python数据分析之pandas统计分析
Mar 03 Python
python 6.7 编写printTable()函数表格打印(完整代码)
Mar 25 Python
关于python类SortedList详解
Sep 04 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的可变变量名的使用方法分享
2012/02/05 PHP
PHP面向对象学习笔记之一 基础概念
2012/10/06 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
Laravel路由研究之domain解决多域名问题的方法示例
2019/04/04 PHP
javascript 验证日期的函数
2010/03/18 Javascript
基于jQuery的模仿新浪微博时间的组件
2011/10/04 Javascript
javascript (用setTimeout而非setInterval)
2011/12/28 Javascript
js+xml生成级联下拉框代码
2012/07/24 Javascript
jquery获得页面元素的坐标值实现思路及代码
2013/04/15 Javascript
js获取当前时间显示在页面上并每秒刷新
2014/12/24 Javascript
jQuery EasyUI datagrid实现本地分页的方法
2015/02/13 Javascript
基于jquery实现放大镜效果
2015/08/17 Javascript
JavaScript中的原型prototype完全解析
2016/05/10 Javascript
微信小程序 监听手势滑动切换页面实例详解
2017/06/15 Javascript
CheckBox多选取值及判断CheckBox选中是否为空的实例
2017/10/31 Javascript
详解js模板引擎art template数组渲染的方法
2018/10/09 Javascript
CentOS7中源码编译安装NodeJS的完整步骤
2018/10/13 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
2019/01/03 NodeJs
在nuxt中使用路由重定向的实例
2020/11/06 Javascript
Python网站验证码识别
2016/01/25 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
关于python写入文件自动换行的问题
2018/06/23 Python
pycharm 取消默认的右击运行unittest的方法
2018/11/29 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
Python3中小括号()、中括号[]、花括号{}的区别详解
2020/11/15 Python
CSS3中Animation属性的使用详解
2015/08/06 HTML / CSS
使用jTopo给Html5 Canva中绘制的元素添加鼠标事件
2014/05/15 HTML / CSS
日本无添加化妆品:HABA
2016/08/18 全球购物
澳大利亚女性快速时尚零售商:Ally Fashion
2018/04/25 全球购物
世界上最值得信赖的多日游在线市场:TourRadar
2018/07/20 全球购物
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
汽车制造与装配专业自荐信范文
2014/01/02 职场文书
活动总结格式
2014/08/30 职场文书