使用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 ...
随机推荐
- pytorch系列 -- 9 pytorch nn.init 中实现的初始化函数 uniform, normal, const, Xavier, He initialization
本文内容:1. Xavier 初始化2. nn.init 中各种初始化函数3. He 初始化 torch.init https://pytorch.org/docs/stable/nn.html#to ...
- ASP.NetCore 错误 NU1605 检测到包降级: Microsoft.Data.Sqlite 从 2.2.1 降级到 2.1.0
找到使用的.csproj文件 将 <PackageReference Include="Microsoft.Data.Sqlite" Version="2.1.0& ...
- html/css:简单网页
html: <!DOCTYPE html> <html> <head> <meta http-equiv=“content-type” content=“te ...
- python基础知识08-类定义、属性、初始化和析构
1.类的定义 class 类 是独立存放变量(属性/方法)的一个空间. 每个实例都是一个独立的变量空间.不同实例之间的空间互相不可见. 一个实例的特征,就是属性. 定义在类中的私有属性也可以被子类继承 ...
- 《算法导论》— Chapter 15 动态规划
序 算法导论一书的第四部分-高级设计和分析技术从本章开始讨论,主要分析高效算法的三种重要技术:动态规划.贪心算法以及平摊分析三种. 首先,本章讨论动态规划,它是通过组合子问题的解而解决整个问题的,通常 ...
- HDU 4436 str2int
str2int Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on HDU. Original ID: 4 ...
- HDU 3062 简单的2-SAT问题
在2-SAT,最让我纠结的还是添加有向线段的函数了 void add_clause(int i,int a,int j,int b){ int m=2*i+a; int n=2*j+b; ...
- 【二分+交互】codeforces B. Glad to see you!
codeforces.com/contest/809/problem/B 只需要找到2个被选中的,首先,注意到将区间二等分时左侧区间为[l,mid],右侧区间为[mid+1,r],dui(mid,mi ...
- sequence(bzoj 1367)
Description Input Output 一个整数R Sample Input 794820141518 Sample Output 13 HINT 所求的Z序列为6,7,8,13,14,15 ...
- hdu5608:function
$n^2-3n+2=\sum_{d|i}f(i)$,问$f(i)$前$n$项和. 方法一:直接切入! $S(n)=\sum_{i=1}^{n}f(i)=\sum_{i=1}^{n}(i^2-3i+2- ...