闲来无事,写了个一键创建tornado 项目的小程序,以后创建项目直接一键搞定。
# coding:utf8 import sys import os import re settings = """# -*- coding:utf-8
-*- import os base_path = os.path.dirname(__file__) setting = { "debug": True,
"static_path": os.path.join(base_path, "static"), "template_path":
os.path.join(base_path, "templates") } """ views = """# -*- coding:utf-8 -*-
import tornado.web from tornado import gen from concurrent.futures import
ThreadPoolExecutor from tornado.concurrent import run_on_executor # create your
views hear class DemoHandler(tornado.web.RequestHandler): executor =
ThreadPoolExecutor(32) @gen.coroutine def get(self, *args, **kwargs): result =
yield self.demo() self.write(result) self.finish() @run_on_executor def
demo(self): return "hello world!" """ urls = """# -*- coding:utf-8 -*- from
tornado.web import Application from views import * from settings import setting
from tornado.routing import ReversibleRuleRouter from tornado.web import url
class Applications(Application, ReversibleRuleRouter): def __init__(self):
handlers = [ url(r'/', DemoHandler, name="demo"), ] super(Applications,
self).__init__(handlers=handlers, **setting) """ runserver = """# -*-
coding:utf-8 -*- from tornado.options import define, options from
tornado.ioloop import IOLoop from urls import Applications define("port",
default=8888, type=int) define("address", default="127.0.0.1", type=str) if
__name__ == '__main__': options.parse_command_line() app = Applications()
app.listen(port=options.port, address=options.address) IOLoop.current().start()
""" class CreateProject(object): def __init__(self): self.base_dir =
os.path.dirname(os.path.abspath(__file__)) self.argument = "-h" if
len(sys.argv) == 1 else sys.argv[1] self.__help__ = """操作:\n -p=project_name:
在当前路径创建。\n -f=/full_path/project_name: 在指定路径创建。""" self.project_name = ""
self.project_dir = "" self.all_dir = [] self.settings = "settings.py" self.urls
= "urls.py" self.views = "views.py" self.statics = "statics" self.templates =
"templates" def __create_file__(self, filename, content): file_path =
os.path.join(self.project_dir, filename) write_file = open(file_path, 'w')
write_file.write(content) write_file.close() def __set_up__(self):
os.makedirs(self.project_dir) os.makedirs(os.path.join(self.project_dir,
self.templates)) os.makedirs(os.path.join(self.project_dir, self.statics))
self.__create_file__('views.py', views) self.__create_file__('settings.py',
settings) self.__create_file__('urls.py', urls)
self.__create_file__('runserver.py', runserver) def __project_name__(self):
project = self.argument.split("=")[1] if not project: print "输入不能为空!" exit()
check = re.compile('\W+') if check.search(project): print
"输入有误(项目名称不能包含中文或特殊字符)请重新输入!" exit() self.project_name = project for root, dir,
file in os.walk(self.base_dir): self.all_dir = dir break if self.project_name
in self.all_dir: print "文件名已存在,请重新输入!" exit() self.project_dir =
os.path.join(self.base_dir, self.project_name) try: self.__set_up__() except
Exception as e: print e exit() def __full_path__(self): self.project_dir =
self.argument.split('=')[1] if os.path.exists(self.project_dir): print
"项目路径已存在,请重新输入!" exit() try: self.__set_up__() except Exception as e: print e
exit() def main(self): if len(self.argument.split('=')) == 2: if '-p' in
self.argument: self.__project_name__() elif '-f' in self.argument:
self.__full_path__() else: print self.__help__ if __name__ == "__main__":
CreateProject().main()
 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信