使用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 ...
随机推荐
- python虚拟环境的搭建及作用
Python的虚拟环境可以使一个Python程序拥有独立的库library和解释器interpreter,而不用与其他Python程序共享统一个library和interpreter.虚拟环境的好处是 ...
- debian swoole环境
debian 9.8 #目录 /lnmp/soure #软件下载位置 /lnmp/data #测试程序位置 安装php-7.3.3 #卸载apt安装的 apt-get autoremove php7* ...
- PHP fpm配置和优化
pm.max_children = 1024 #最大子进程数 maximum number of child processes when pm is set to 'dynamic' or 'ond ...
- SpringMVC的删除功能
Dao层 package net.roseindia.dao; import java.util.Date; import java.util.List; import net.roseindia.m ...
- SQL Prompt 5.1使用
SQL Prompt 5.1教程 1.下载 自行下载安装文件.本人是从http://www.cr173.com/下载的. 2.安装 安装没什么特别的,不用说了 3.注意一下破解和配置 按里面的read ...
- ISAPI映射路径错误,导致K3Cloud打不开。
今天一个同事说她的K3Cloud打不开,一看是页面报500错误,具体信息看图片: 问题: ISAPI配置的映射路径错了,多了个反斜线. 解决办法: 在IIS管理器中找到ISAPI筛选器,删除掉就行了.
- Codevs 队列练习 合并版
3185 队列练习 1 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给定一个队列(初始为空),只有两种操作入队和出队,现给出这 ...
- 【2018 Multi-University Training Contest 2】
01: 02: 03: 04:https://www.cnblogs.com/myx12345/p/9394511.html 05: 06: 07:https://www.cnblogs.com/my ...
- 51nod1040 最大公约数之和
求$\sum_{i=1}^{n}(i,n)$.n<=1e9. $\sum_{i=1}^{n}(i,n)=\sum_{d|n}d\sum_{i=1}^{n}[(i,n)=d]=\sum_{d|n} ...
- linux下reboot和shutdown关机命令详解
我 们在操作Linux v/服务器的时候肯定会有需要重启系统,或者关闭系统等操作.有些用户是直接到VPS主机商家面板上操作的,这样一来比较麻烦,二来有些面板还不易于使用 容易导致面板卡死.所以最好的方 ...