python 代码自动生成的方法 (代码生成器)

遇到的问题

工作中遇到这么一个事,需要写很多C++的底层数据库类,但这些类大同小异,无非是增删改查,如果人工来写代码,既费力又容易出错;而借用python的代码自动生成,可以轻松搞定;
(类比JAVA中的Hibernate自动生成的数据库底层操作代码)
下面介绍使用python字符串替换的方法;

Python字符串替换的几种方法

1. 字符串替换
将需要替换的内容使用格式化符替代,后续补上替换内容;

template = "hello %s , your website  is %s " % ("大CC","http://blog.me115.com")
print(template)

也可使用format函数完成:

template = "hello {0} , your website  is {1} ".format("大CC","http://blog.me115.com")
print(template)

注:该方法适用于变量少的单行字符串替换;

2. 字符串命名格式化符替换
使用命名格式化符,这样,对于多个相同变量的引用,在后续替换只用申明一次即可;

template = "hello %(name)s ,your name is %(name), your website  is %(message)s" %{"name":"大CC","message":"http://blog.me115.com"}
print(template)

使用format函数的语法方式:

template = "hello {name} , your name is {name}, your website  is {message} ".format(name="大CC",message="http://blog.me115.com")
print(template)

注:适用相同变量较多的单行字符串替换;

3.模版方法替换
使用string中的Template方法;

from string import Template
tempTemplate = string.Template("Hello $name ,your website is $message")
print(tempTemplate.substitute(name='大CC',message='http://blog.me115.com'))

有了模版方法后,就可以将模版保存到文件单独编辑,在生成的地方替换为需要的变量;

示例:代码生成

这个示例使用以上讲到的第三种方法;
建立一个模版文件,里面需要替换的内容使用${}变量替换;
dao_cpp.template

///
/// @class ${CLASSNAME}
/// @brief Redis底层接口类 操作${TABLE_NAME}表
/// TABLE ${TABLE_NAME_UPPER}
/// @author dao_cpp_generator.py
/// @generate date: ${GENE_DATE}
/// [注:本文件为自动生成,不需要人为编辑,若有修改,请通过配置py脚本来重新生成.]#include "${CLASSNAME}.h"
#include "include/${TABLE_NAME}_t.h"
#include "RedisManager.h"
#include "common/LogMacros.h"
#include "common/StringUtility/OtherStringFunc.h"
#include "common/DateTime.h"namespace redisdao{#define PRIMARY_KEY "${PRIMER_KEY}"
const string ${CLASSNAME}::TABLE_NAME = "${TABLE_NAME}";
const string ${CLASSNAME}::TABLE_ID = "${TABLE_ID}"; //在数据库中的表的唯一性标识符
const string ${CLASSNAME}::KEY_SEPARETER = "${KEY_SEPARETER}";${CLASSNAME}::${CLASSNAME}(void)
{if ( 0 == m_reHandler.EnsureConnect())m_bRedisConnected = true;elsem_bRedisConnected = false;
}${CLASSNAME}::~${CLASSNAME}(void)
{
}int ${CLASSNAME}::InsertRecord(const string& strVal)
...

python代码生成程序:
cpp_generator.py

#! /usr/bin/env python
#coding=utf-8
#Redis底层操作类CPP文件生成程序(*RedisDao.cpp)
#author me115@126.com 2014-7-22
import os,sys,re,traceback
from datetime import datetime
from string import Templateclass DaoCppGenerator:def generate(self):tableName = 'students'className = '%sRedisDao' %  tableName.capitalize()filePath = r'include/%s.cpp' % classNameclass_file = open(filePath,'w')lines = []#模版文件template_file = open(r'dao_cpp.template','r')tmpl = Template(template_file.read())#模版替换lines.append(tmpl.substitute(CLASSNAME = className,TABLE_NAME = tableName,TABLE_NAME_UPPER = tableName.upper(), GENE_DATE = datetime.now().strftime('%Y-%m-%d %H:%M:%S'),TABLE_ID = '115',EXPIRE_DATE = '06JUN14'))# 0.将生成的代码写入文件class_file.writelines(lines)class_file.close()print 'generate %s over. ~ ~' % filePath

有了这个程序,再配合一堆XML配置文件,就可以轻松生成各种C++程序代码了;

Posted by: 大CC | 25JUL,2014
博客:blog.me115.com [订阅]
微博:新浪微博

转载于:https://www.cnblogs.com/me115/p/3867382.html

python 自动生成C++代码 (代码生成器)相关推荐

  1. Python自动生成代码 - 通过tkinter图形化操作生成代码框架

    Python自动生成代码 - 通过tkinter图形化操作生成代码框架 背景 脚本代码 Demo_CodeGenerator.py display.py FileHandler.py: 脚本运行结果: ...

  2. Intellij IDEA中使用MyBatis-generator 自动生成MyBatis代码

    2019独角兽企业重金招聘Python工程师标准>>> Intellij IDEA中使用MyBatis-generator 自动生成MyBatis代码 MyBatis Generat ...

  3. 用Python自动生成NBA巨星生涯数据曲线

    1.序 之前写过一个用 python 自动生成球员职业生涯数据的程序(原文请关注本人公众号),大家的反响很好,我也感到很欣慰.有问我怎么做的,如何学 python 的,也有提建议说集成到 web 里面 ...

  4. python自动汇总表格_用Python自动生成Excel报表

    作者 / 来源:林骥(ID:linjiwx) 01 安装和导入模块 以 Python 中的 openpyxl 模块为例,它能够读取和修改 Excel 文件,如果你还没有安装,可以通过以下命令进行安装: ...

  5. python ppt自动生成_实战 | Python自动生成PPT调研报告

    原标题:实战 | Python自动生成PPT调研报告 原文: 全文约 3821 字,读完可能需要 5 分钟. 文/JSong @2017.02.28 在数据分析里面有一句话是说,80%的时间要用于数据 ...

  6. python制作相册_《自拍教程73》Python 自动生成相册文件夹

    这里将告诉您<自拍教程73>Python 自动生成相册文件夹,具体操作过程:案例故事: 接Python mediainfo批量重命名图片文件,测试图片是批量重命名好了, 但是将测试图片放于 ...

  7. 用Python自动生成Excel报表

    在日常工作中,可能会有一些重复无聊的任务,比如说,从 Excel 或数据库中收集一些数据,设置相应的数据格式并做成报表. 类似这种重复无聊的任务,我们完全可以交给 Python 去自动完成,只要第一次 ...

  8. 用Python自动生成数据日报!

    今天聊聊怎么用Python自动生成数据日报! 其实我觉得蛮简单,核心就是你组装好日报的内容模板,然后将变化的量交给python去填充,需要用到的基本就是python处理excel.word和ppt等相 ...

  9. python项目分析报告_实战 | Python自动生成PPT分析报告

    原标题:实战 | Python自动生成PPT分析报告 在数据分析里面有一句话是说,80%的时间要用于数据清洗和整理,而我觉得理想的状态应该是把更多的把时间花在数据背后的洞察当中.去年11月在简书占了个 ...

最新文章

  1. Halcon 彩色图片通道分割处理
  2. 【APICloud系列|3】开发APP对UI的一般性要求
  3. 哈夫曼树 (最优二叉树)
  4. java接收json字符串_JAVA后台接收前台传过来的json字符串并解析获得key 和value
  5. 2020年日历可编辑内容模板_2020鼠年新春海报模板合集
  6. Xcode不能真机调试运行
  7. 操,escape sequence的输入方法我以前找过一次,这次又忘了,又找了一次,记下来,...
  8. agv机器人无人仓系统-opentcs算法改进
  9. qt中添加注释的快捷键_Qt Creator快捷键
  10. 基于4G路由器的救护车联网方案:生命,刻不容缓
  11. 山东大学项目实训——地图圈系统——微信小程序(18)
  12. switch()函数 ----by xhxh
  13. 余承东吐槽iPhone X长的丑体验差;雷军称小米明年要进世界500强;特斯拉股价被指太荒唐丨价值早报
  14. 强化学习入坑之路04
  15. redux react-redux简介
  16. Sitewhere物联网云平台安装
  17. Spring Security Oauth2 认证流程
  18. 移动硬盘一直不能正常读取
  19. 雷军回应输 10 亿背后真相:世界正在青睐不务正业的人
  20. 30岁的程序员你不懂

热门文章

  1. php列表显示教程,Dedecms后台管理文档列表显示自定义字段方法教程
  2. vscode 格式化某一段代码_VSCode格式化代码功能失效的bug解决方法
  3. span 可编辑 控制数量_CSS如何限制显示的文本字数
  4. jsp java乱码转换_Java Web 编码问题一:jsp的编码问题
  5. Java同一个类的不同实例_如何创建2个类实例注入不同类的依赖项实现(通过guice)?...
  6. java methode_Java Method.getTypeParameters方法代码示例
  7. jq 直接调用php文件_PHP的函数类别和变量命名
  8. android点击展开textview,《Android APP可能有的东西》之UI篇:展开TextView全文
  9. C语言中的struct结构体对齐问题
  10. 加州大学戴维斯分校 计算机科学,加州大学戴维斯分校的计算机专业如何?