python使用numpy按一定格式讀取bin文件的實現(xiàn)_第1頁
python使用numpy按一定格式讀取bin文件的實現(xiàn)_第2頁
python使用numpy按一定格式讀取bin文件的實現(xiàn)_第3頁
python使用numpy按一定格式讀取bin文件的實現(xiàn)_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第python使用numpy按一定格式讀取bin文件的實現(xiàn)目錄使用numpy按一定格式讀取bin文件這里重點介紹fromfilepython讀取bin文件并下發(fā)串口總結(jié)

使用numpy按一定格式讀取bin文件

python環(huán)境下,如何使用numpy像matlab一樣按一定格式讀取bin文件?

bin文件就是將數(shù)據(jù)按16進(jìn)制形式存儲的二進(jìn)制文件(binary),可以使用WINHEX、Notepad++(需安裝插件)等以16進(jìn)制形式打開,如圖用notepad++打開。

由于使用python中的read()讀取二進(jìn)制文件時是以字符串形式讀取,且每次只能讀取一個字節(jié),十分不方便。

偶然發(fā)現(xiàn)可以使用numpy中的fromfile按指定格式對bin文件進(jìn)行讀寫,方便了許多。

NumPy提供了多種存取數(shù)組內(nèi)容的文件操作函數(shù)。

保存數(shù)組數(shù)據(jù)的文件可以是二進(jìn)制格式或者文本格式。

二進(jìn)制格式的文件又分為NumPy專用的格式化二進(jìn)制類型和無格式類型。

tofile()將數(shù)組中的數(shù)據(jù)以二進(jìn)制格式寫進(jìn)文件tofile()輸出的數(shù)據(jù)不保存數(shù)組形狀和元素類型等信息fromfile()函數(shù)讀回數(shù)據(jù)時需要用戶指定元素類型,并對數(shù)組的形狀進(jìn)行適當(dāng)?shù)男薷?/p>

這里重點介紹fromfile

numpy.fromfile(file,

dtype=float,

count=-1,

sep='',

offset=0,

*,

like=None)

file:是待讀取內(nèi)容,可以是文件、路徑、字符串dtype:返回數(shù)組的數(shù)據(jù)類型。對于二進(jìn)制文件,它用于確定文件中項目的大小和字節(jié)順序。支持大多數(shù)內(nèi)置數(shù)字類型,也支持?jǐn)U展類型。1.18.0開始支持復(fù)數(shù)格式count:要讀取的項目數(shù)量(不一定以字節(jié)為單位),count=-1表示讀取所有項目(即完整文件)sep:項目之間的分隔符(如果文件是文本文件)。空()分隔符表示文件應(yīng)被視為二進(jìn)制文件。分隔符中的空格()與零個或多個空格字符匹配。僅由空格組成的分隔符必須至少匹配一個空格offset:距文件當(dāng)前位置的偏移量(以字節(jié)為單位)。默認(rèn)為0。僅允許用于二進(jìn)制文件。可以和count搭配用于讀取指定位置和長度的內(nèi)容。like:引用對象以允許創(chuàng)建非NumPy數(shù)組的數(shù)組,如果傳入一個像like一樣支持__array_function__協(xié)議的數(shù)組形式,結(jié)果將由它來定義。在這種情況下,它確保創(chuàng)建與通過此參數(shù)傳入的對象兼容的數(shù)組對象。

importnumpyasnp

a=np.arange(24)

b=np.fromfile("F:/a.bin",dtype=32,count=5,offset=8)

print(a,'\n',b)

由上圖可以看出,數(shù)據(jù)是以32位的十六進(jìn)制數(shù)形式存儲,也就是一個數(shù)占4個字節(jié)。(tofile寫入數(shù)據(jù)的順序為Corder)。

此時,若設(shè)置count=5,offset=8,也就是從0開始偏移8個字節(jié),讀取5個數(shù)

結(jié)果如圖:

python讀取bin文件并下發(fā)串口

#coding:utf-8

importtime,serial

fromstructimport*

importbinascii

file=open('E:\\1.bin','rb')

i=0

while1:

c=file.read(1)

#將字節(jié)轉(zhuǎn)換成16進(jìn)制;

ssss=str(binascii.b2a_hex(c))[2:-1]

print(str(binascii.b2a_hex(c))[2:-1])

ifnotc:

break

ser=serial.Serial('COM3',57600,timeout=1)

ser.write(bytes().fromhex(ssss))#將16進(jìn)制轉(zhuǎn)換為字節(jié)

ifi%16==0:

time.sleep(0.001)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論