目标

完成一个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文件模板的更多相关文章

  1. Python生成pyc文件

    Python生成pyc文件 pyc文件是py文件编译后生成的字节码文件(byte code).pyc文件经过python解释器最终会生成机器码运行.所以pyc文件是可以跨平台部署的,类似Java的.c ...

  2. windows平台 python生成 pyd文件

    Python的文件类型介绍: .py       python的源代码文件 .pyc     Python源代码import后,编译生成的字节码 .pyo     Python源代码编译优化生成的字节 ...

  3. VNPY加密教程(Python生成pyd文件)

    安装成功之后,再修改设置.让Cython可以找到vcarsall.bat.此处有两种方案.(我采用方案1,亲测可用.方案2未测试,看似可用.) 方案1:修改Python安装目录的文件设置 window ...

  4. Python生成pyd文件

    Python的脚本文件是开源的,量化策略的安全性没有保障.因此需要保护源码.那么要对Python代码进行混淆.加密保护. 混淆代码,我准备使用pyminifier.而加密处理,就比较麻烦. Pytho ...

  5. python 生成 pyc 文件

    以 pyc 为扩展名的是Python的编译文件.其执行速度快于 py 文件且不能用文本编辑编辑查看.所以 pyc 文件往往代替 py 文件发布. Python 在执行时,首先会将 py 文件中的源代码 ...

  6. python生成xml文件

    先上代码: #!/usr/bin/env python3 # _*_ coding: utf-8 _*_ from xml.dom.minidom import Document def readFi ...

  7. Python生成gexf文件并导入gephi做网络图分析

    Gephi是一款优秀的复杂网络分析软件,支持导入多种格式的文件.gexf格式是Gephi 推荐的格式,基于 XML.本文是一个用python写的简单Demo,示例如何生成一个典型的gexf格式文件.代 ...

  8. python 生成 xml文件 属性的顺序问题

    需求很奇葩. 文档示例 <ITEM key="username" eng="User Name" chn="用户名" val=&quo ...

  9. python生成html文件浏览器中文显示乱码问题

    近来在网上采集数据,想把采集下来的数据整合成html的形式保存.以便其他的平台产品可以直接读取html显示或者根据html标签提取数据. def output_html(self): try: fou ...

随机推荐

  1. 什么是session?

    Session一般译作会话.从不同的层面看待session,它有着类似但不全然相同的含义.比如,在web应用的用户看来,他打开浏览器访问一个电子商务网站,登录.并完成购物直到关闭浏览器,这是一个会话. ...

  2. luogu P1205 方块转换

    题目描述 一块N x N(1<=N<=10)正方形的黑白瓦片的图案要被转换成新的正方形图案.写一个程序来找出将原始图案按照以下列转换方法转换成新图案的最小方式: 1:转90度:图案按顺时针 ...

  3. Docker安装Oracle12C,导入dmp文件出现ORA-12170错误

    oracle版本为 sath89/oracle-12c oracle基本信息 hostname: localhost port: 1521 sid: xe username: system passw ...

  4. sql语句执行顺序与性能优化(1)

    一.首先我们看一下mysql的sql语句的书写顺序 . select--distinct--from--on--where--group by--having--聚合函数cube.rollup--or ...

  5. 每日命令:(14)tune2fs

    tune2fs简介 tune2fs是调整和查看ext2/ext3文件系统的文件系统参数,Windows下面如果出现意外断电死机情况,下次开机一般都会出现系统自检.Linux系统下面也有文件系统自检,而 ...

  6. python str.format 中文对齐的细节问题

    写了一个练手的爬虫...在输出的时候出现了让人很不愉♂悦的问题 像这样: 令人十分难受啊! #----------------------------------------------------- ...

  7. 【HIHOCODER1527 】 快速乘法

    描述 在写代码时,我们经常要用到类似 x × a 这样的语句( a 是常数).众所周知,计算机进行乘法运算是非常慢的,所以我们需要用一些加法.减法和左移的组合来实现乘一个常数这个操作.具体来讲, 我们 ...

  8. ServletContext作用功能详解

    ServletContext,是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放.request,一个用户可有多个:session,一个用户一个:而servletContext,所 ...

  9. Sublime Text 3使用方法

    一.下载安装 Sbulime Text 3官网   参考网站:http://lucida.me/blog/sublime-text-complete-guide/注意在安装时勾选Add to expl ...

  10. zoj 1763 A Simple Question of Chemistry

    A Simple Question of Chemistry Time Limit: 2 Seconds      Memory Limit: 65536 KB Your chemistry lab ...