博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用python生成c文件模板
阅读量:5094 次
发布时间:2019-06-13

本文共 3360 字,大约阅读时间需要 11 分钟。

目标

完成一个python脚本,实现指定名字后,自动生成.c和.h的模板。例如:

/**  * @file        epc.c  * @author      陈维  * @version     V01  * @date        2017.01.11  * @brief       epc芯片驱动  * @note  *  * @attention   COYPRIGHT INMOTION ROBOT  */

代码

# ctemplate.pyimport sysimport datetimeclass ctemplate:    __fileName = ' '    __sourceName = ' '    __headerName = ' '    __time = datetime.datetime.now().strftime('%Y.%m.%d')    __fileComments = {
'@attention':'COPYRIGHT WEYNE', '@note':' ', '@brief':' ', '@date':__time, '@version':'V01', '@author':'Weyne Chen', '@file':" ", } __CommentsOrder = ('@file','@author','@version','@date','@brief','@note','@attention') def __init__(self,s): self.__fileName = s self.__sourceName = s + ".c" self.__headerName = s + '.h' def generateCommentsAtTop(self,name): self.__fileComments['@file'] = name comments = ('/**\n') #find max length of string maxLen = 0 for s in self.__CommentsOrder: if(len(s) > maxLen): maxLen = len(s) for k in self.__CommentsOrder: alignSpaceAmount = maxLen - len(k) + 4 alignSpace = alignSpaceAmount * ' ' comments += ('* '+ k + alignSpace + self.__fileComments[k] + '\n') comments += ('**/\n\n') return comments def generateCommentsInTheEnd(self): return ("/********************* (C) COPYRIGHT WEYNE CHEN *******END OF FILE ********/\n") def createSource(self): fh = open(self.__sourceName,mode = 'w',encoding='utf-8') cm = self.generateCommentsAtTop(self.__sourceName) cm += ("#include \"%s\"\n" %self.__headerName) cm += ("\n"*5) cm += self.generateCommentsInTheEnd() fh.write(cm) fh.close() def createHeader(self): fh = open(self.__headerName,mode = 'w',encoding='utf-8') cm = self.generateCommentsAtTop(self.__headerName) cm += "#ifndef __%s_H\n" %self.__fileName.upper() cm += "#define __%s_H\n" %self.__fileName.upper() cm += ("\n"*5) cm += "#endif\n" cm += self.generateCommentsInTheEnd() fh.write(cm) fh.close() def createTemplatePairs(self): self.createSource() self.createHeader()if __name__ == '__main__': if len(sys.argv) != 2: sys.stderr.write("please input corret parameter") else: s = sys.argv[1] ct = ctemplate(s) ct.createTemplatePairs()

在CMD中执行 python ctemplate.py test之后,会生成test.c和test.h文件,并已经添加部分描述内容。效果如下:

test.c

/*** @file         test.c* @author       Weyne Chen* @version      V01* @date         2017.01.19* @brief         * @note          * @attention    COPYRIGHT WEYNE**/#include "test.h"/********************* (C) COPYRIGHT WEYNE CHEN *******END OF FILE ********/

test.h

/*** @file         test.h* @author       Weyne Chen* @version      V01* @date         2017.01.19* @brief         * @note          * @attention    COPYRIGHT WEYNE**/#ifndef __TEST_H#define __TEST_H#endif/********************* (C) COPYRIGHT WEYNE CHEN *******END OF FILE ********/

总结

需要注意python字典在迭代器输出时,不是按输入顺序输出的。因为其存储过程实际是散列的,所以输出的顺序是不定的。若是想要顺序输出,只能使用list或者给dict增加一个tuple,并将key值存储到tuple中。

转载于:https://www.cnblogs.com/WeyneChen/p/6670599.html

你可能感兴趣的文章
BZOJ.1312.[Neerc2006]Hard Life(分数规划 最大权闭合子图)
查看>>
js的concat函数、join 、slice函数及二维数组的定义方式
查看>>
Vue的单页应用中如何引用单独的样式文件
查看>>
html5利用getObjectURL获取图片路径上传图片
查看>>
学习资料
查看>>
hread.interrupt()到底意味着什么
查看>>
寒假训练总结
查看>>
equals与==的区别
查看>>
spring 监听器
查看>>
[BZOJ 3709] Bohater
查看>>
Python 的字符编码
查看>>
项目 数据可视化5 随机漫步
查看>>
Visual Studio 2012 更新包2发布,附离线安装方法及下载
查看>>
ThinkPHP带表情无限级评论回复
查看>>
YII2 搭建redis拓展(教程)
查看>>
多继承下的super()指向的不一定是直接父类
查看>>
约瑟夫环
查看>>
MySQL的数据类型
查看>>
解决移动端 footer fixd 定位被键盘顶起来的方案
查看>>
模拟 Coder-Strike 2014 - Round 1 A. Poster
查看>>