python 讀寫和合并二進位bin檔案

來源:互聯網
上載者:User

標籤:nal   進位   offset   二進位檔案   資料   col   read   open   get   

在燒錄程式的時候,需要將多個二進位bin檔案合成一個,並且要指定資料區段地址位移量,在資料區段之間的地址填充預設值0xff。因為不想手動操作,想直接通過make命令就可以產生合并後的bin檔案,具體方法是通過在makefile中添加調用python指令碼命令來實現bin檔案合併作業,沒正經學過指令碼語言,python上手最快,就決定用python寫一個指令碼,然後添加到makefile中就好了。

python像c一樣操作二進位檔案需要用到struct庫。

指令碼編寫的大概思想是:

1.根據最後一個檔案資料的地址位移量和最後一個檔案的大小來確定合成後檔案的最終大小。

2.因為第一個bin檔案的位移量為0,所以建立一個第一個檔案的副本,根據資料地址位移量在檔案末尾添加0xff或者其他bin檔案資料,所有bin檔案添加完後,該副本即為合并後bin檔案。

python指令碼代碼如下:

import osimport shutilimport structbin1_path = ‘demo1.bin‘bin2_path = ‘demo2.bin‘bin3_path = ‘demo3.bin‘bin4_path = ‘demo4.bin‘bin_result_path = ‘imagedemo.bin‘offset1 = 0x00000000offset2 = 0x00008000offset3 = 0x0000a000offset4 = 0x00100000shutil.copyfile(bin1_path,bin_result_path)bin_1 = open(bin1_path,‘rb‘)bin_2 = open(bin2_path,‘rb‘)bin_3 = open(bin3_path,‘rb‘)bin_4 = open(bin4_path,‘rb‘)bin_merge = open(bin_result_path, ‘ab‘)bin4_size = os.path.getsize(bin4_path)bin_result_size = os.path.getsize(bin_result_path)final_size = 1024*1024*1 + bin4_sizeoffset = bin_result_sizevalue_default = struct.pack(‘B‘, 0xff)while offset < final_size:    if offset == offset2:        data = bin_2.read()        bin_merge.write(data)        offset = bin_merge.tell()    elif offset == offset3:        data = bin_3.read()        bin_merge.write(data)        offset = bin_merge.tell()    elif offset == offset4:        data = bin_4.read()        bin_merge.write(data)        offset = bin_merge.tell()    else:        bin_merge.write(value_default)        offset = bin_merge.tell()bin_1.close()bin_2.close()bin_3.close()bin_4.close()bin_merge.close()

 

python 讀寫和合并二進位bin檔案

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.