时间:2021-05-22
numpy的np.fromfile会出现如下的问题,只能一次性读取文件的内容,不能追加读取,连续两次的np.fromfile读到的东西一样
如果数据文件太大(几个G或以上)不能一次性全读进去,需要追加读取
而我希望读到的donser1和donser2是连续的两段
(实际使用时,比如说读取的文件是二进制数据文件,每一块文件都包括包头+数据,希望将这两块分开获取,然后再做进一步处理)
代码:
import numpy as nplength=2500plt_arr=np.linspace(0.0, 0.0, length*2048*16)start=0tail_size = 40 #40bitnum_size=16*1024-40 # 16kb -40bdef 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, taildef 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_detailsimport timesecond=2*60print secondwhile True:get_details.sign_cycle()time.sleep(second)上面的代码就是让get_details模块的sign_cycle()函数每两分钟执行一次。
是不是超简单!!!!!!
以上这篇python numpy实现多次循环读取文件 等间隔过滤数据示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Numpy是Python强大的数据计算和处理模块,其操作数据非常迅速且简单易行。首先读取CSV文件>>>importnumpyasnp#导入numpy模块>>>
程序中经常需要使用excel文件,批量读取文件中的数据python读取excel文件可以使用xlrd模块pipinstallxlrd安装模块示例:#coding
python读取txt文件:(思路:先打开文件,读取文件,最后用for循环输出内容)1、读取1.1基于pythoncsv库#3.读取csv至字典x,yimpor
我在使用python读取几十万行的文件中的数据,并构造字典,列表等数据结构时,再访问字典,列表时,一般都会出现内存不够的问题,然后只能循环读取几百行或者一定数量
本文中为大家介绍使用java8StreamAPI逐行读取文件,以及根据某些条件过滤文件内容1.Java8逐行读取文件在此示例中,我将按行读取文件内容并在控制台打