python编程模板例子

该程序的作用是将.bin文件转成hex和dat文件 

运行命令:python exchange.py -f a.bin -d 0x0

#!/python3.5/bin/python3
import re
import os
import argparse
import sys

sys.path.append(os.path.dirname(os.path.abspath(__file__)))

demo_doc = """
===============================
Command:
    change bin file to hex and dat files
    python exchange.py -f a.bin -d 0x0
===============================
"""

class file_transform():
    def __init__(self,binfile,start_addr):
        self.binfile = binfile
        self.start_addr = int(start_addr,16)
    def main(self):
        if not (os.path.exists('./output')):
            os.system("mkdir output")
        filename = re.sub('.bin$','',self.binfile)
        hex_file = filename + '.hex'
        dat_file = filename + '.dat'
        os.system("od -v -tx4 -An -w4 %s > ./output/%s"%(self.binfile,hex_file))
        fhex = open('./output/%s'%hex_file,'r')
        fdat = open('./output/%s'%dat_file,'w')
        lines = fhex.readlines()
        for line in lines:
            a = line[0:4]
            b = line[2:4]
            c = line[4:6]
            d = line[6:8]
            fdat.write('%x  /%s;\n'%(self.start_addr,d))
            fdat.write('%x  /%s;\n'%(self.start_addr+1,c))
            fdat.write('%x  /%s;\n'%(self.start_addr+2,b))
            fdat.write('%x  /%s;\n'%(self.start_addr+3,a))
            self.start_addr += 4
def my_getopt():
    parser = argparse.ArgumentParser(formatter_class=argparse.RawTexHelpFormatter,epilog=demo_doc)
    parser.add_argument('-f'   , "--binfile"       ,default=''  ,help='input bin file')
    parser.add_argument('-d'   , "--start_addr"    ,default=''  ,help='input start addr')
    args = parser.parse_args()
    return args
if __name__=='__main__':
    cmd_opt = my_getopt()
    m_file_transform = file_transform(cmd_opt.binfile,cmd_opt.start_addr)
    m_file_transform.main()
    print('\033[0;35m\n[REPORT]\033[0m Success !!!\n')

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值