博客專欄

EEPW首頁(yè) > 博客 > ython二進(jìn)制方式讀取文件,并將讀取出的數(shù)據(jù)以txt的格式保存

ython二進(jìn)制方式讀取文件,并將讀取出的數(shù)據(jù)以txt的格式保存

發(fā)布人:電子禪石 時(shí)間:2024-08-12 來(lái)源:工程師 發(fā)布文章
import os
import struct
import numpy as np


def read_file():                                    	# 函數(shù)功能為:將一個(gè)文件夾下所有二進(jìn)制文件以每四個(gè)字節(jié)方式讀取,將讀取出的數(shù)據(jù)轉(zhuǎn)換為浮點(diǎn)類型的數(shù)據(jù)并以txt格式保存到新的地址去
    path = './二進(jìn)制文件所在文件夾名稱'            		# 文件夾地址
    new_path = './要存放生成txt文件的文件夾名稱/'   		# 新的存放生成文件的文件夾地址
    b_list = ['此處填寫(xiě)二進(jìn)制文件名稱(也可以參考2020.11.10所寫(xiě)博客,利用后綴名找到path文件夾下所有二進(jìn)制文件)']										
    
    for b_file in b_list:
        f = open(path+'/'+b_file, 'rb')          		# 對(duì)b_list列表的文件以二進(jìn)制方式讀取
        b_file_ext = os.path.splitext(b_file) 			# 分離二進(jìn)制文件前后綴,b_front為前綴名,b_ext為后綴名
        b_front, b_ext = b_file_ext
        m = []											# 空列表用于存放二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為的浮點(diǎn)數(shù)
	        while True:                                 # 每四個(gè)字節(jié)進(jìn)行讀取以及格式轉(zhuǎn)換
            a = f.read(4)
            if a == b'':                            	# 為空結(jié)束循環(huán)
                break
            a_float = struct.unpack("f", a)[0]     		# 此處存在存儲(chǔ)的大小端問(wèn)題   將二進(jìn)制數(shù)據(jù)轉(zhuǎn)換為浮點(diǎn)數(shù)
            m.append(a_float)
        m_array = np.array(m)                       	# 將m列表轉(zhuǎn)換為array數(shù)組

        if not os.path.exists(new_path):            	# 判斷工作目錄有無(wú)new_path文件夾,若無(wú)則創(chuàng)建
            os.mkdir(new_path)

        np.savetxt(new_path+b_front+'.txt', m_array)  	# 對(duì)文件進(jìn)行重命名并保存到新的文件夾
        f.close()

read_file()


*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。



關(guān)鍵詞: python

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉