国产探花免费观看_亚洲丰满少妇自慰呻吟_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()            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 格尔木市| 于田县| 云和县| 黑山县| 威远县| 隆德县| 玉林市| 临泉县| 乐亭县| 闽清县| 连云港市| 马尔康县| 华蓥市| 武胜县| 增城市| 都匀市| 砚山县| 龙胜| 焉耆| 博客| 神农架林区| 乌鲁木齐县| 石柱| 九龙坡区| 呼图壁县| 陆良县| 大庆市| 奉节县| 闽清县| 华蓥市| 攀枝花市| 麟游县| 唐河县| 遂宁市| 巴中市| 万年县| 岳普湖县| 凤阳县| 遂昌县| 康平县| 赣榆县|