首页 > 编程 > Python > 正文

对python实现模板生成脚本的方法详解

2019-11-25 13:21:39
字体:
来源:转载
供稿:网友

最近项目需要,针对主项目提取一个小的基础版本,供于在新建项目时使用,所以就有这个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()

配置文件:

{ "template": {  "path" : "D:/tunicorn-web/framework-template",  ##模板文件主目录  "exclude" : {                  ##不进行模板格式化的文件   "file_path" : [],     "file_name" : ["config.json", "make_project.py"],    "ext_name" : ["css", "woff2"],   "file_type" : [],   "regex" : []  },  "include" : {                  ##进行模板格式化的文件   "file_path" : [],   "file_name" : []  } }, "store":{  "dir_path" : "e:/test"             ##输出路径主目录       "data" : {  "project_name":"NewJAVA",            ##模板数据  "project_prefix":"newjava"           ##模板数据 }}

执行操作:

1、安装了python环境

2、双击python脚本

3、然后在执行下README中的步骤

readme:

README
=============

脚本使用
-------------
1. 打开config.json文件
2. 配置相关信息[输出目录、项目名称、项目前缀]
3. 执行make_project.py脚本
4. 查看输出目录

以上这篇对python实现模板生成脚本的方法详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表