|
发表于 2013-9-25 08:19:18
|
显示全部楼层
本帖最后由 kebaojun305 于 2013-9-25 08:48 编辑
俺用python做的脚本(只需安装python2.7版的就可以了) 组合制定目录下的所有文件,并输出一个.h的头文件 头文件中包含所有文件的起始地址和文件大小。 前面有defin宏定义。
这个脚本还有很多改进的地方。刚学的时候 写的。- # -*- coding: GBK -*-
- #!/usr/bin/env python
- """本程序的目的是把指定目录下的所有文件合并成一个文件(二进制合并)."""
- import os,sys
- class FileIntegrater(object):
- def __init__(self, fn):
- self._fhandle = open(fn, 'wb+')
- self.statinfo=os.stat(fn)
- self.length = self.statinfo.st_size
- self.outinfo=[
- """/******************************************************\r\n\
- * 本文档输出的地址和数据单位是字节\r\n\
- *******************************************************/\r\n\
- """]
- print self.length
- def append(self, fn,name,cou):
- _contents = []
-
- #outfile=open('f:/pro.txt','w')
- if os.path.isfile(fn):
- self.statinfo=os.stat(fn)
- _len=self.statinfo.st_size
- #_contents = open(fn, 'rb').read(_len)
- _contents = open(fn, 'rb').read()
- self._fhandle.write(_contents)
- self._fhandle.flush()
- if cou>76 :
- self.outinfo.append('#define A'+str(cou-76)+' ')
- else :
- self.outinfo.append('#define P'+str(cou)+' ')
- self.outinfo.append(repr(self.length))
-
- if cou>76 :
- self.outinfo.append('/2,'+repr(_len)+'/2 /*')
- else :
- #self.outinfo.append('/2,'repr(_len)+'/2,')
- self.outinfo.append('/2,')
- name_len=len(name)
- x_len=name.find('x',(name_len-12),name_len)
- d_len=name.find('.',(name_len-12),name_len)
- h_len=name.find('_',(name_len-12),name_len)
-
- self.outinfo.append(name[(h_len+1):x_len]+',')
- self.outinfo.append(name[(x_len+1):d_len]+' /*')
- self.outinfo.append(name)
- self.outinfo.append('*/ \r\n')
- self.length += _len
- #print outinfo
- # print 'New File length:',self.length
- # print 'INFO:', fn, '[length: ' + repr(_len) + ']', 'has been appended.'
- else:
- print 'ERROR:', fn, 'is not a file.'
- return
- def close(self):
- self._fhandle.close()
- print 'End file length:',self.length
- f=open('h:\PROJECT\screw_oil_expeller\project\榨油机\const.h','wb')
- for i in self.outinfo:
-
- f.write(i)
- f.close
- # outfile.write(outinfo)
- # outfile.close()
-
- def walkdir(dirname,out_file_name):
-
- fi=FileIntegrater(out_file_name)
- count=0;
- try:
- ls=os.listdir(dirname)
- except:
- print 'access deny'
- else:
- for l in ls:
- temp=os.path.join(dirname,l)
- count=count+1;
- #temp.encode('gb2312')
- fi.append(temp,l,count)
- if(os.path.isdir(temp)):
- walkdir(temp)
- else:
- print temp
- fi.close()
- if __name__=="__main__":
-
- #b=raw_input("请输出输出文件的目录和文件名:")
- #r=raw_input("请输出要合并的目录:")
-
- walkdir('h:/PROJECT/screw_oil_expeller/bin','F:/PROJECT/screw_oil_expeller/pro.bin')
- #sys.exit()
复制代码 输出的头文件 是这样格式的
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|