中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python怎么實現自動生成C++代碼的代碼生成器

發布時間:2022-07-12 14:12:35 來源:億速云 閱讀:378 作者:iii 欄目:開發技術

這篇文章主要講解了“python怎么實現自動生成C++代碼的代碼生成器”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“python怎么實現自動生成C++代碼的代碼生成器”吧!

遇到的問題

工作中遇到這么一個事,需要寫很多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;
    else
        m_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 Template

class DaoCppGenerator:

    def generate(self):
        tableName = 'students'
        className = '%sRedisDao' %  tableName.capitalize()
        filePath = r'include/%s.cpp' % className
        class_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

感謝各位的閱讀,以上就是“python怎么實現自動生成C++代碼的代碼生成器”的內容了,經過本文的學習后,相信大家對python怎么實現自動生成C++代碼的代碼生成器這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

株洲市| 喀什市| 黄骅市| 湟源县| 灵璧县| 西乌| 密云县| 盐津县| 安平县| 青川县| 寻乌县| 赣榆县| 通道| 海城市| 合阳县| 泉州市| 庐江县| 尚志市| 吉林市| 鄯善县| 辽阳县| 伊金霍洛旗| 大足县| 施甸县| 景洪市| 黔西县| 屯昌县| 姚安县| 原阳县| 南漳县| 宝清县| 兰州市| 古浪县| 玉山县| 夏津县| 论坛| 腾冲县| 闵行区| 永平县| 阜平县| 兴业县|