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中的fileinput模块的简单实用示例
Jul 09 Python
利用python库在局域网内传输文件的方法
Jun 04 Python
Python查找第n个子串的技巧分享
Jun 27 Python
python的常用模块之collections模块详解
Dec 06 Python
Django利用cookie保存用户登录信息的简单实现方法
May 27 Python
python 数据提取及拆分的实现代码
Aug 26 Python
Python中Unittest框架的具体使用
Aug 27 Python
python分布式编程实现过程解析
Nov 08 Python
Python超越函数积分运算以及绘图实现代码
Nov 20 Python
Python跑循环时内存泄露的解决方法
Jan 13 Python
浅谈python3 构造函数和析构函数
Mar 12 Python
python 如何引入协程和原理分析
Nov 30 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
很实用的一个完整email发送程序
2006/10/09 PHP
PHP生成短网址的3种方法代码实例
2014/07/08 PHP
php一维二维数组键排序方法实例总结
2014/11/13 PHP
鼠标移动到一张图片时变为另一张图片
2006/12/05 Javascript
一个不错的应用,用于提交获取文章内容,不推荐用
2007/03/03 Javascript
javascript实现划词标记+划词搜索功能
2007/03/06 Javascript
基于jquery库的tab新形式使用
2012/11/16 Javascript
javascript对JSON数据排序的3个例子
2014/04/12 Javascript
angularjs 处理多个异步请求方法汇总
2015/01/06 Javascript
浅谈angularJS中的事件
2016/07/12 Javascript
jQuery-mobile事件监听与用法详解
2016/11/23 Javascript
jQuery实现一个简单的轮播图
2017/02/19 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
原生实现一个react-redux的代码示例
2018/06/08 Javascript
Vue.js结合bootstrap前端实现分页和排序效果
2018/12/29 Javascript
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
python实现忽略大小写对字符串列表排序的方法
2014/09/25 Python
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
Python 给某个文件名添加时间戳的方法
2018/10/16 Python
python 返回列表中某个值的索引方法
2018/11/07 Python
Pytorch之卷积层的使用详解
2019/12/31 Python
使用Python制作新型冠状病毒实时疫情图
2020/01/28 Python
Python关于反射的实例代码分享
2020/02/20 Python
JupyterNotebook 输出窗口的显示效果调整方法
2020/04/13 Python
python实现逢七拍腿小游戏的思路详解
2020/05/26 Python
化工专业推荐信范文
2013/11/28 职场文书
个人收入证明范本
2014/01/12 职场文书
简历上的自我评价怎么写
2014/01/28 职场文书
优秀社区干部事迹材料
2014/02/03 职场文书
《梅花魂》教学反思
2014/04/30 职场文书
家长通知书家长意见
2014/12/30 职场文书
同意报考证明
2015/06/17 职场文书
聘任书范文大全
2015/09/21 职场文书
Go语言 go程释放操作(退出/销毁)
2021/04/30 Golang