python numpy實現多次循環讀取文件 等間隔過濾數據示例
時間:2020-03-14來源:電腦系統城作者:電腦系統城
numpy的np.fromfile會出現如下的問題,只能一次性讀取文件的內容,不能追加讀取,連續兩次的np.fromfile讀到的東西一樣
如果數據文件太大(幾個G或以上)不能一次性全讀進去,需要追加讀取

而我希望讀到的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實現多次循環讀取文件 等間隔過濾數據示例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持我們。
相關信息
-
PyTorch兩種安裝方法
PyTorch兩種安裝方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值...
2021-03-29
-