使用python生成c文件模板
目标
完成一个python脚本,实现指定名字后,自动生成.c和.h的模板。例如:
/**
* @file epc.c
* @author 陈维
* @version V01
* @date 2017.01.11
* @brief epc芯片驱动
* @note
*
* @attention COYPRIGHT INMOTION ROBOT
*/
代码
# ctemplate.py import sys
import datetime class 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中。
使用python生成c文件模板的更多相关文章
- Python生成pyc文件
Python生成pyc文件 pyc文件是py文件编译后生成的字节码文件(byte code).pyc文件经过python解释器最终会生成机器码运行.所以pyc文件是可以跨平台部署的,类似Java的.c ...
- windows平台 python生成 pyd文件
Python的文件类型介绍: .py python的源代码文件 .pyc Python源代码import后,编译生成的字节码 .pyo Python源代码编译优化生成的字节 ...
- VNPY加密教程(Python生成pyd文件)
安装成功之后,再修改设置.让Cython可以找到vcarsall.bat.此处有两种方案.(我采用方案1,亲测可用.方案2未测试,看似可用.) 方案1:修改Python安装目录的文件设置 window ...
- Python生成pyd文件
Python的脚本文件是开源的,量化策略的安全性没有保障.因此需要保护源码.那么要对Python代码进行混淆.加密保护. 混淆代码,我准备使用pyminifier.而加密处理,就比较麻烦. Pytho ...
- python 生成 pyc 文件
以 pyc 为扩展名的是Python的编译文件.其执行速度快于 py 文件且不能用文本编辑编辑查看.所以 pyc 文件往往代替 py 文件发布. Python 在执行时,首先会将 py 文件中的源代码 ...
- python生成xml文件
先上代码: #!/usr/bin/env python3 # _*_ coding: utf-8 _*_ from xml.dom.minidom import Document def readFi ...
- Python生成gexf文件并导入gephi做网络图分析
Gephi是一款优秀的复杂网络分析软件,支持导入多种格式的文件.gexf格式是Gephi 推荐的格式,基于 XML.本文是一个用python写的简单Demo,示例如何生成一个典型的gexf格式文件.代 ...
- python 生成 xml文件 属性的顺序问题
需求很奇葩. 文档示例 <ITEM key="username" eng="User Name" chn="用户名" val=&quo ...
- python生成html文件浏览器中文显示乱码问题
近来在网上采集数据,想把采集下来的数据整合成html的形式保存.以便其他的平台产品可以直接读取html显示或者根据html标签提取数据. def output_html(self): try: fou ...
随机推荐
- 02.28 day03
print(1 or 3 > 2 and 4 < 5 or 6 and 2 < 7)## while True:# print(11)# print(22)# # break# # ...
- 4. COLLATION_CHARACTER_SET_APPLICABILITY
4. COLLATION_CHARACTER_SET_APPLICABILITY 表COLLATION_CHARACTER_SET_APPLICABILITY表示哪种字符集适用于哪种排序规则. INF ...
- python基础 : 1.计算机基础 2.注释 3.变量 4.标识符 5.输出 6.格式化输出 7.输入 8.算数运算符 9.字符串操作
- Codeforces 5D Follow Traffic Rules
[题意概述] 某个物体要从A途经B到达C,在通过B的时候速度不能超过vd. 它的加速度为a,最大速度为vm:AB之间距离为d,AC之间距离为L: 问物体最少花多少时间到达C. [题解] 分情况讨论. ...
- 【01】魔芋使用MDN的一点点经验
[01]魔芋使用MDN的一点点经验 1,MDN地址: https://developer.mozilla.org/en-US/(下图) 2,建议看英文原文.因为中文翻译落后,并且有些翻译并 ...
- 大数据学习——采集目录到HDFS
采集需求:某服务器的某特定目录下,会不断产生新的文件,每当有新文件出现,就需要把文件采集到HDFS中去 根据需求,首先定义以下3大要素 l 采集源,即source——监控文件目录 : spoold ...
- C#与Ranorex自动化公用方法
原创 - C#与Ranorex自动化公用方法 利用c#在Ranorex上写自动化已经有很长的一段时间了,总结发现常用的方法不外乎如下几种: 1.打开浏览器:或者app public static vo ...
- oracle 恢复中的switch datafile all是什么意思
使用rman进行恢复时,如果使用了set name修改文件路径,那么恢复后,控制文件里面的信息是没有修改该的,如果要同步控制文件的信息那么就需要使用 switch datafile allall这个可 ...
- poj2446 Chessboard 【最大匹配】
题目大意:一个n*m的棋盘,某些格子不能用,问用1*2的骨牌能否完全覆盖这个棋盘,当然,骨牌不能有重叠 思路:显然黑白染色后,一个骨牌只能覆盖一个白色格子和一个黑色格子,然后我们间二染色建图,看能否有 ...
- PHP应用日期与时间
<?php/* 时间戳 * * 1. 是一个整数 * 2. 1970-1-1 到现在的秒数 1213212121 * * 2014-02-14 11:11:11 * * 02/14/2014 1 ...