国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

89542767 / 830人閱讀


  小編寫這篇文章,主要目的還是給大家講一下關于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


  有了這個程序,再配合一堆XML配置文件,就可以輕松生成各種C++程序代碼了。


  以上就是小編給大家總結的,關于python實現c++代碼的相關事宜了,希望可以給各位讀者帶來更多的幫助下。


文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/127800.html

相關文章

  • 當談論迭代器時,我談些什么?

    摘要:示例代碼如下此示例中可以看出,當迭代器終止時,通過拋出異常告知迭代器已耗盡。但如果迭代器所指向的數據結構在其存在時發生了插入或刪除操作,則迭代器將可能失效。與的情形類似,對進行任何插入操作也將損壞迭代器。 花下貓語:之前說過,我對于編程語言跟其它學科的融合非常感興趣,但我還說漏了一點,就是我對于 Python 跟其它編程語言的對比學習,也很感興趣。所以,我一直希望能聚集一些有其它語言基...

    王軍 評論0 收藏0
  • 做一個運行Python文件的Atom插件

    摘要:由于這個插件有式的程序返回值和運行時間的顯示,我希望我的插件也具有這個功能。這個命令在后臺其實會做很多事情,比如設置中的版本號添加版本標簽并提交到版本庫中。可以看到第一次提交插件的版本號為。 最近在學習Python,自然也安裝了Atom編輯器的一些Python插件。有一個插件名字叫做atom-python-run,作用很簡單,就是按F5運行當前Python文件。不過這個插件有一個問題,...

    Genng 評論0 收藏0
  • SegmentFault 技術周刊 Vol.40 - 2018,來學習一門新的編程語言吧!

    摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經到來了,總結過去的 2017,相信小伙們一定有很多收獲...

    caspar 評論0 收藏0
  • SegmentFault 技術周刊 Vol.40 - 2018,來學習一門新的編程語言吧!

    摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經到來了,總結過去的 2017,相信小伙們一定有很多收獲...

    nihao 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<