目标

完成一个python脚本,实现指定名字后,自动生成.c和.h的模板。例如:

  1. /**
  2. * @file epc.c
  3. * @author 陈维
  4. * @version V01
  5. * @date 2017.01.11
  6. * @brief epc芯片驱动
  7. * @note
  8. *
  9. * @attention COYPRIGHT INMOTION ROBOT
  10. */

代码

  1. # ctemplate.py
  2.  
  3. import sys
  4. import datetime
  5.  
  6. class ctemplate:
  7.  
  8. __fileName = ' '
  9. __sourceName = ' '
  10. __headerName = ' '
  11. __time = datetime.datetime.now().strftime('%Y.%m.%d')
  12. __fileComments = {'@attention':'COPYRIGHT WEYNE',
  13. '@note':' ',
  14. '@brief':' ',
  15. '@date':__time,
  16. '@version':'V01',
  17. '@author':'Weyne Chen',
  18. '@file':" ",
  19. }
  20.  
  21. __CommentsOrder = ('@file','@author','@version','@date','@brief','@note','@attention')
  22.  
  23. def __init__(self,s):
  24. self.__fileName = s
  25. self.__sourceName = s + ".c"
  26. self.__headerName = s + '.h'
  27.  
  28. def generateCommentsAtTop(self,name):
  29. self.__fileComments['@file'] = name
  30.  
  31. comments = ('/**\n')
  32.  
  33. #find max length of string
  34. maxLen = 0
  35. for s in self.__CommentsOrder:
  36. if(len(s) > maxLen):
  37. maxLen = len(s)
  38.  
  39. for k in self.__CommentsOrder:
  40. alignSpaceAmount = maxLen - len(k) + 4
  41. alignSpace = alignSpaceAmount * ' '
  42. comments += ('* '+ k + alignSpace + self.__fileComments[k] + '\n')
  43.  
  44. comments += ('**/\n\n')
  45.  
  46. return comments
  47.  
  48. def generateCommentsInTheEnd(self):
  49. return ("/********************* (C) COPYRIGHT WEYNE CHEN *******END OF FILE ********/\n")
  50.  
  51. def createSource(self):
  52. fh = open(self.__sourceName,mode = 'w',encoding='utf-8')
  53. cm = self.generateCommentsAtTop(self.__sourceName)
  54. cm += ("#include \"%s\"\n" %self.__headerName)
  55. cm += ("\n"*5)
  56. cm += self.generateCommentsInTheEnd()
  57. fh.write(cm)
  58. fh.close()
  59.  
  60. def createHeader(self):
  61. fh = open(self.__headerName,mode = 'w',encoding='utf-8')
  62. cm = self.generateCommentsAtTop(self.__headerName)
  63. cm += "#ifndef __%s_H\n" %self.__fileName.upper()
  64. cm += "#define __%s_H\n" %self.__fileName.upper()
  65. cm += ("\n"*5)
  66. cm += "#endif\n"
  67. cm += self.generateCommentsInTheEnd()
  68. fh.write(cm)
  69. fh.close()
  70.  
  71. def createTemplatePairs(self):
  72. self.createSource()
  73. self.createHeader()
  74.  
  75. if __name__ == '__main__':
  76. if len(sys.argv) != 2:
  77. sys.stderr.write("please input corret parameter")
  78. else:
  79. s = sys.argv[1]
  80. ct = ctemplate(s)
  81. ct.createTemplatePairs()

在CMD中执行 python ctemplate.py test之后,会生成test.c和test.h文件,并已经添加部分描述内容。效果如下:

test.c

  1. /**
  2. * @file test.c
  3. * @author Weyne Chen
  4. * @version V01
  5. * @date 2017.01.19
  6. * @brief
  7. * @note
  8. * @attention COPYRIGHT WEYNE
  9. **/
  10.  
  11. #include "test.h"
  12.  
  13. /********************* (C) COPYRIGHT WEYNE CHEN *******END OF FILE ********/

test.h

  1. /**
  2. * @file test.h
  3. * @author Weyne Chen
  4. * @version V01
  5. * @date 2017.01.19
  6. * @brief
  7. * @note
  8. * @attention COPYRIGHT WEYNE
  9. **/
  10.  
  11. #ifndef __TEST_H
  12. #define __TEST_H
  13.  
  14. #endif
  15. /********************* (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. python虚拟环境的搭建及作用

    Python的虚拟环境可以使一个Python程序拥有独立的库library和解释器interpreter,而不用与其他Python程序共享统一个library和interpreter.虚拟环境的好处是 ...

  2. debian swoole环境

    debian 9.8 #目录 /lnmp/soure #软件下载位置 /lnmp/data #测试程序位置 安装php-7.3.3 #卸载apt安装的 apt-get autoremove php7* ...

  3. PHP fpm配置和优化

    pm.max_children = 1024 #最大子进程数 maximum number of child processes when pm is set to 'dynamic' or 'ond ...

  4. SpringMVC的删除功能

    Dao层 package net.roseindia.dao; import java.util.Date; import java.util.List; import net.roseindia.m ...

  5. SQL Prompt 5.1使用

    SQL Prompt 5.1教程 1.下载 自行下载安装文件.本人是从http://www.cr173.com/下载的. 2.安装 安装没什么特别的,不用说了 3.注意一下破解和配置 按里面的read ...

  6. ISAPI映射路径错误,导致K3Cloud打不开。

    今天一个同事说她的K3Cloud打不开,一看是页面报500错误,具体信息看图片: 问题: ISAPI配置的映射路径错了,多了个反斜线. 解决办法: 在IIS管理器中找到ISAPI筛选器,删除掉就行了.

  7. Codevs 队列练习 合并版

    3185 队列练习 1  时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 给定一个队列(初始为空),只有两种操作入队和出队,现给出这 ...

  8. 【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 ...

  9. 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} ...

  10. linux下reboot和shutdown关机命令详解

    我 们在操作Linux v/服务器的时候肯定会有需要重启系统,或者关闭系统等操作.有些用户是直接到VPS主机商家面板上操作的,这样一来比较麻烦,二来有些面板还不易于使用 容易导致面板卡死.所以最好的方 ...