国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

對python實現模板生成腳本的方法詳解

2020-02-16 01:00:14
字體:
來源:轉載
供稿:網友

最近項目需要,針對主項目提取一個小的基礎版本,供于在新建項目時使用,所以就有這個python模板生成腳本,其作用如下:

1、通過配置文件來控制模板中的數據、格式化的過濾條件

2、執行后會把目錄下所有的文件都會執行一篇

#!/usr/bin/python#encoding: utf-8 import jsonimport codecsimport os def get_files(root_path):  for dir in os.walk(root_path):    if dir[2]:      for nf in dir[2]:        yield os.path.join(dir[0], nf) def exclude_filter(exclude, nfile):  files_path = exclude.get('file_path')  files_name = exclude.get('file_name')  base_name = os.path.basename(nfile)  exts_name = exclude.get('ext_name')  base_ext_name = base_name.rsplit(".", 1)[1]  if files_path:    for npath in files_path:      if npath==nfile:        return True  elif files_name:    for name in files_name:      print name, base_name      if name==base_name:        return True  elif exts_name:    for name in exts_name:      print name, base_ext_name      if name==base_ext_name:        return True def include_filter(include, nfile):  files_path = include.get('file_path')  files_name = include.get('file_name')  base_name = os.path.basename(nfile)  if files_path:    for npath in files_path:      if npath==nfile:        return True  elif files_name:    for name in files_name:      if name==base_name:        return True def main():  # read config  config = {}  with codecs.open("config.json","rb","UTF-8") as f:    config = json.loads(f.read())  if not config:    return   template = config.get("template")  if template and template.get('path'):    root_path = template.get('path')    if not os.path.exists(root_path):      print "source path not exist"      return    root_path = os.path.abspath(root_path)    old_path = os.path.dirname(root_path)  else:    return  exclude = template.get('exclude')  include = template.get('include')   store = config.get("store")  if not store or not os.path.exists(store.get('dir_path', '')):    return   data = config.get("data")  if not data:    return   if not os.path.exists(root_path):    print 'root path not exists'    return   if os.path.isfile(root_path):    files = [root_path]  else:    base_name = os.path.basename(root_path)    store_root_path = os.path.join(store.get('dir_path'), base_name)    if not os.path.exists(store_root_path):      os.mkdir(store_root_path)    files = get_files(root_path)   for nfile in files:    print nfile    try:      with codecs.open(nfile, "rb", "UTF-8") as f:        s = f.read()       if not exclude_filter(exclude, nfile) or include_filter(include, nfile):        s = s % data    except:      with codecs.open(nfile, "rb") as f:        s = f.read()     # save to file    fn = nfile.replace(old_path, store.get('dir_path'))    fn_dir = os.path.dirname(fn)    if not os.path.exists(fn_dir):      os.makedirs(fn_dir)    try:      with codecs.open(fn, "wb", "UTF-8") as f:        f.write(s)        f.flush()    except:      with codecs.open(fn, "wb") as f:        f.write(s)        f.flush() if __name__ == '__main__':  main()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 稷山县| 神农架林区| 夹江县| 台山市| 双鸭山市| 子长县| 佛教| 连云港市| 启东市| 香港 | 沧源| 阜阳市| 牡丹江市| 沂南县| 邵东县| 邳州市| 科尔| 太仆寺旗| 板桥市| 沽源县| 成武县| 渝北区| 石泉县| 英吉沙县| 通城县| 平潭县| 平遥县| 丽江市| 肇东市| 隆昌县| 全州县| 商河县| 漳州市| 临沧市| 余姚市| 浦县| 昌黎县| 祁阳县| 和静县| 衡阳市| 万山特区|