python包和logging日记
一、包
包:文件夹下具有__init__.py文件就是一个包,包用来治理多个模块
包的构造以下:
bake ├── __init__.py ├── api ├── __init__.py ├── policy.py └── versions.py ├── cmd ├── __init__.py └── manage.py └── db ├── __init__.py └── models.py
在bake的同级建立一个test.py导入policy.py:
import bake.api.policy bake.api.policy.get() #导入的名字太长了,能够起别号 import bake.api.policy as p p.get() #from 导入在__init__.py修正 from . import policy #我们需要在policy文件中向sys.path增加了当前的途径 import os import sys sys.path.insert(os.path.dirname(__file__)) #print(__file__)检察一下 #运用__all__,在__init__.py中 __all__ = ["policy"] #或 from . import policy
总结:
import 包.包.包
from 包.包.包 import 模块
途径:
相对:从在外层最先导入
相对:从当前最先(.)导入或许从父级(..)导入
运用相对途径时必须在包的最外层且同级
from 包 import *
需要在__init__.py做操纵
python2:import文件夹(没有__init__.py)会报错
python3:import文件夹(没有__init__.py)不会报错
相干引荐:《Python视频教程》
二、logging模块
logging模块用于纪录软件的种种状况,生意业务纪录,毛病纪录,登录纪录……
1.函数式简朴设置:
import logging logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error message') logging.critical('critical message')
默许情况下python的logging模块将日记打印到了规范输出中,且只显现了大于即是WARNING级别的日记,证实默许的级别为WARNING
日记级别:CRITICAL > ERROR > WARNING > INFO > DEBUG
2.天真设置日记级别,日记情势,输入位置(低配版)
只能写入日记,不能公屏输出
import logging logging.basicConfig(level = logging.DEBUG, format = '%(astime)s %(filename)s [line:%(lineno)d] %(levelname)s %(message)s', datefmt = '%Y-%m-%d %H:%M:%S', filename = 'test.log', filemode = 'a') dic = {"key":123} logging.debug(dic) num = 100 logging.info(f"用户余额:{num - 50}") try: num = int(input("请输入数字:")) except Exception as e: logging.warning("e") logging.error('error message') logging.critical('critical message')
basicConfig()函数中可通过细致参数来变动logging模块默许行动,可用参数有:
filename:用指定的文件名建立FiledHandler,如许日记会被存储在指定的文件中。
filemode:文件打开方式,在指定了filename时运用这个参数,默许值为“a”还可指定为“w”。
format:指定handler运用的日记显现花样。
datefmt:指定日期时候花样。
level:设置纪录日记的级别
stream:用指定的stream建立StreamHandler。能够指定输出到
sys.stderr,sys.stdout或许文件(f=open(‘test.log’,’w’)),默许为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被疏忽。
format参数中能够用到的花样化串:
%(name)s Logger的名字
%(levelno)s 数字情势的日记级别
%(levelname)s 文本情势的日记级别
%(pathname)s 挪用日记输出函数的模块的完全途径名,能够没有
%(filename)s 挪用日记输出函数的模块的文件名
%(module)s 挪用日记输出函数的模块名
%(funcName)s 挪用日记输出函数的函数名
%(lineno)d 挪用日记输出函数的语句地点的代码行
%(created)f 当前时候,用UNIX规范的示意时候的浮 点数示意
%(relativeCreated)d 输出日记信息时的,自Logger建立以 来的毫秒数
%(asctime)s 字符串情势的当前时候。默许花样是 “2003-07-08 16:49:45,896”。逗号背面的是毫秒
%(thread)d 线程ID。能够没有
%(threadName)s 线程名。能够没有
%(process)d 历程ID。能够没有
%(message)s用户输出的音讯
3.logger对象设置(中配版)
import logging logger = logging.getLogger() # 建立一个logger fh = logging.FileHandler('test.log',mode="a",encoding='utf-8') # 文件 ch = logging.StreamHandler() # 屏幕 formatter = logging.Formatter('%(asctime)s - %(name)s - %(filename)s - [line:%(lineno)d] - %(levelname)s - %(message)s') # 将屏幕和文件都是用以上花样 logger.setLevel(logging.DEBUG) # 设置纪录级别 fh.setFormatter(formatter) # 运用自定义的花样化内容 ch.setFormatter(formatter) logger.addHandler(fh) #logger对象能够增加多个fh和ch对象 logger.addHandler(ch) logger.debug('logger debug message') logger.info('logger info message') logger.warning('logger warning message') logger.error('logger error message') logger.critical('logger critical message')
以上就是python包和logging日记的相干引见的细致内容,更多请关注ki4网别的相干文章!