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 相关文章推荐
使用Turtle画正螺旋线的方法
Sep 22 Python
Python创建一个元素都为0的列表实例
Nov 28 Python
解决matplotlib.pyplot在Jupyter notebook中不显示图像问题
Apr 22 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
May 16 Python
Django中F函数的使用示例代码详解
Jul 06 Python
Idea安装python显示无SDK问题解决方案
Aug 12 Python
如何用Django处理gzip数据流
Jan 29 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
Jan 30 Python
pytorch 如何使用float64训练
May 24 Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
Apr 29 Python
python开发制作好看的时钟效果
May 02 Python
详解NumPy中的线性关系与数据修剪压缩
May 25 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
现磨咖啡骗局!现磨咖啡=新鲜咖啡?现磨咖啡背后的猫腻你不懂!
2019/03/28 冲泡冲煮
php中cookie的使用方法
2014/03/29 PHP
php简单实现数组分页的方法
2016/04/30 PHP
PHP常用函数之base64图片上传功能详解
2019/10/21 PHP
JavaScript 参考教程
2006/12/29 Javascript
firefox firebug中文入门教程 脚本之家新年特别版
2010/01/02 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
jQuery实现内容定时切换效果完整实例
2016/04/06 Javascript
JS中的==运算: [''] == false —&gt;true
2016/07/24 Javascript
select下拉框插件jquery.editable-select详解
2017/01/22 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
值得收藏的vuejs安装教程
2017/11/21 Javascript
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
node中的session的具体使用
2018/09/14 Javascript
详解vue移动端项目代码拆分记录
2019/03/15 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
JS数组方法slice()用法实例分析
2020/01/18 Javascript
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
Python中的面向对象编程详解(上)
2015/04/13 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
python编程实现归并排序
2017/04/14 Python
Python 实现异步调用函数的示例讲解
2018/10/14 Python
Python读写文件模式和文件对象方法实例详解
2019/09/17 Python
python matplotlib实现将图例放在图外
2020/04/17 Python
玩具反斗城美国官网:Toys"R"Us
2016/09/17 全球购物
Mio Skincare美国官网:身体紧致及孕期身体护理
2017/03/05 全球购物
英国自行车商店:AW Cycles
2021/02/24 全球购物
高校毕业生登记表自我鉴定
2013/11/03 职场文书
学校安全管理责任书
2014/07/23 职场文书
2015年库房工作总结
2015/04/30 职场文书
史上最全的军训拉歌口号
2015/12/25 职场文书
六年级作文之预言作文
2019/10/25 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android