目标

完成一个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. 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 ...

  2. ASP.NetCore 错误 NU1605 检测到包降级: Microsoft.Data.Sqlite 从 2.2.1 降级到 2.1.0

    找到使用的.csproj文件 将 <PackageReference Include="Microsoft.Data.Sqlite" Version="2.1.0& ...

  3. html/css:简单网页

    html: <!DOCTYPE html> <html> <head> <meta http-equiv=“content-type” content=“te ...

  4. python基础知识08-类定义、属性、初始化和析构

    1.类的定义 class 类 是独立存放变量(属性/方法)的一个空间. 每个实例都是一个独立的变量空间.不同实例之间的空间互相不可见. 一个实例的特征,就是属性. 定义在类中的私有属性也可以被子类继承 ...

  5. 《算法导论》— Chapter 15 动态规划

    序 算法导论一书的第四部分-高级设计和分析技术从本章开始讨论,主要分析高效算法的三种重要技术:动态规划.贪心算法以及平摊分析三种. 首先,本章讨论动态规划,它是通过组合子问题的解而解决整个问题的,通常 ...

  6. HDU 4436 str2int

    str2int Time Limit: 3000ms Memory Limit: 131072KB This problem will be judged on HDU. Original ID: 4 ...

  7. 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;  ...

  8. 【二分+交互】codeforces B. Glad to see you!

    codeforces.com/contest/809/problem/B 只需要找到2个被选中的,首先,注意到将区间二等分时左侧区间为[l,mid],右侧区间为[mid+1,r],dui(mid,mi ...

  9. sequence(bzoj 1367)

    Description Input Output 一个整数R Sample Input 794820141518 Sample Output 13 HINT 所求的Z序列为6,7,8,13,14,15 ...

  10. 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- ...