python numpy實現(xiàn)多次循環(huán)讀取文件 等間隔過濾數(shù)據(jù)示例
numpy的np.fromfile會出現(xiàn)如下的問題,只能一次性讀取文件的內容,不能追加讀取,連續(xù)兩次的np.fromfile讀到的東西一樣
如果數(shù)據(jù)文件太大(幾個G或以上)不能一次性全讀進去,需要追加讀取
而我希望讀到的donser1和donser2是連續(xù)的兩段
(實際使用時,比如說讀取的文件是二進制數(shù)據(jù)文件,每一塊文件都包括包頭+數(shù)據(jù),希望將這兩塊分開獲取,然后再做進一步處理)
代碼:
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)
假設數(shù)據(jù)文件的格式是 數(shù)據(jù)+包尾,plt_arr存儲全部的數(shù)據(jù)部分,包尾丟棄,該方法實現(xiàn)了多次連續(xù)追加讀取數(shù)據(jù)文件的內容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( )
補充知識:python每隔一段時間運行一個函數(shù)
用python語言每隔兩分鐘從接口獲取一次數(shù)據(jù)來插入到數(shù)據(jù)庫
看了大佬們的方法感覺最簡單就是:
做一個死循環(huán),讓函數(shù)執(zhí)行完后休眠兩分鐘,然后進入下一次執(zhí)行,除非手動停止或者有錯誤停止,否則程序會永遠運行下去。
以下是代碼:
import get_details import time second=2*60 print second while True: get_details.sign_cycle() time.sleep(second)
上面的代碼就是讓get_details模塊的sign_cycle()函數(shù)每兩分鐘執(zhí)行一次。
是不是超簡單?。。。。?!
以上這篇python numpy實現(xiàn)多次循環(huán)讀取文件 等間隔過濾數(shù)據(jù)示例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
python 打印直角三角形,等邊三角形,菱形,正方形的代碼
這篇文章主要介紹了python 打印直角三角形,等邊三角形,菱形,正方形的代碼,需要的朋友可以參考下2017-11-11Python實現(xiàn)常見數(shù)據(jù)格式轉換的方法詳解
這篇文章主要為大家詳細介紹了Python實現(xiàn)常見數(shù)據(jù)格式轉換的方法,主要是xml_to_csv和csv_to_tfrecord,感興趣的小伙伴可以了解一下2022-09-09python3第三方爬蟲庫BeautifulSoup4安裝教程
這篇文章主要為大家詳細介紹了python3第三方爬蟲庫BeautifulSoup4的安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06PYTHON如何讀取和寫入EXCEL里面的數(shù)據(jù)
這篇文章主要介紹了PYTHON如何讀取和寫入EXCEL里面的數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-10-10淺談使用Python內置函數(shù)getattr實現(xiàn)分發(fā)模式
這篇文章主要介紹了淺談使用Python內置函數(shù)getattr實現(xiàn)分發(fā)模式,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下2018-01-01