1.规范目录结构 bin 存放执行文件 conf 存放配置文件 core 核心业务逻辑 db 存放数据处理相关 lib 公共代码和第三方的模块 log 日志 readme 是一个文本文件,用于描述应用程序 1.使用规范目录结构的好处 -是项目结构更清晰 -提高可读性 规范目录结构不是固定,可以根据实际需求进行添加修改 如果你的执行文件不在最外层,需要手动将要访问的模块路径加入到sys.path,一下写法是固定的 import os os.path.dirname#获取该路径的上一级路径 BASE_DIR=os.path.dirname(os.path.dirname(__file__)) import sys sys.path.append(BASE_DIR) 获取当前执行文件的完整路径 print(__file__) import os,sys sys.path.append(os.path.dirname(os.path.dirname(__file__))) 2.常用模块 logging time random os logging 日志模块 什么是日志 就是生活中的日记 用于记录什么时间发生了什么事情 为什么要记 就是为了在以后记录程序出现问题的时候,能够通过日志来找到问题的原因 怎么记日志 可以自己实现 当然有功能更强大的logging模块 import logging logging.debug('debug') logging.info('info') logging.warning('warning') logging.error('error') logging.critical('critical') logging模块将日志分为了五种等级 为什么要分级别? 为了在后期查看日志时候方便定位 logging的默认县市级别为WARNING,低于WARNING级别的都不会被显示 默认的输出位置是终端 默认的输出格式 WARNING(级别):root(日志生成器的名字):warning(输出的日志消息) 修改默认的行为 日志模块中的四种角色 1.logger 日志生成器 生成一条日志 可以设置生成日志的级别 2.filter 日志的过滤器 对logger生成的日志进行过滤 3.formatter 处理格式的 设置日志的输出格式 4.handler 处理器 最终负责将日志输出到指定的位置 handler的级别若低于生成器是没有意义的 自定义日志生成器 可以为生成器指定名字 是因为 可以存在多个生成器 logger=logging.getLogger('logger1') 设置日志级别 logging模块内部使用整数区分级别 此处可以直接写对应整数,但建议写常量 logger.setLevel(logging.WARNING) logger.warning('这是一个警告信息') 创建一个处理器 handler=logging.FileHandler('test.log','a',encoding='utf-8') fmt=logging.Formatter("%(asctime)s - %(name)s -%(filename)s - %(message)s") handler.setFormatter(fmt) 将handler与生成器绑定 可以为一个生成器指定多个处理器 logger.addHandler(handler) import logging 1.获取生成器 logger=logging.getLogger('mylogger') logger.setLevel(10) 2.格式处理器 fmt=logging.Formatter('%(levelname)s %(asctime)s %(message)s') 3.创建handler处理器 handler=logging.Filehandler('test2.log','a',encoding='utf-8') 可以绑定多个handler StreamHandler用于输出到终端 handler2=logging.StreamHandler() 4.将handler与格式处理器绑定 handler.setFormatter(fmt) handler2.setFormatter(fmt) 5.把handler生成器绑定 logger.addHandler(handler) logger.addHandler(handler2) name = "bgon" logger.debug(name)
规范目录结构,常用模块之日志模块
最新推荐文章于 2024-09-20 21:48:23 发布