python numpy实现多次循环读取文件 等间隔过滤数据示例

作者:未名亚柳 时间:2022-10-30 09:44:13 

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()函数每两分钟执行一次。

是不是超简单!!!!!!

来源:https://www.cnblogs.com/dzzy/p/9335643.html

标签:python,numpy,读取,文件,过滤
0
投稿

猜你喜欢

  • python 定时任务去检测服务器端口是否通的实例

    2021-05-18 15:09:13
  • SpringBoot集成JPA持久层框架,简化数据库操作

    2024-01-16 11:42:38
  • Vue实现图片轮播组件思路及实例解析

    2023-07-02 17:02:02
  • pycharm通过ssh连接远程服务器教程

    2022-10-09 19:44:31
  • Python实现批量识别图片文字并存为Excel

    2021-07-28 06:34:23
  • Vue实现父子组件页面刷新的几种常用方法

    2024-06-07 16:05:52
  • python+mysql实现简单的web程序

    2024-01-15 12:31:58
  • PHP实现HTML页面静态化的方法

    2023-10-15 04:09:59
  • python UDP(udp)协议发送和接收的实例

    2022-09-01 10:17:02
  • Python演化计算基准函数详解

    2021-02-13 19:55:32
  • Pytorch中的广播机制详解(Broadcast)

    2022-11-17 05:22:51
  • SQL Server默认1433端口修改方法

    2010-07-22 22:35:00
  • 什么是blob,mysql blob大小配置介绍

    2024-01-12 19:05:27
  • Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)

    2021-06-11 17:17:54
  • PHP实现登录的Cookie存储方案详解

    2023-05-25 08:45:17
  • 三达不溜:www

    2009-03-28 11:44:00
  • Python paramiko模块使用解析(实现ssh)

    2021-02-03 10:29:26
  • Python图像处理之图像金字塔详解

    2022-03-11 10:35:04
  • vue-cli4如何打包静态资源到指定目录

    2024-05-22 10:43:24
  • Pandas读存JSON数据操作示例详解

    2022-05-24 08:14:03
  • asp之家 网络编程 m.aspxhome.com