python-study-17

复习

上节课复习1、什么是模块模块是一系列功能的集合体2、为何用模块拿来(内置或第三方的模块)主义,提升开发效率自定义模块可以让程序的各部分组件重用模块内的功能3、如何用模块大前提:模块是被执行文件导入使用,模块的导入必须搞明白谁是执行文件,谁是被导入的模块import首次import m1导入模块都发生三件事:1、先创建一个模块的名称空间2、执行m1.py,将执行过程中产生的名称都放入模块的名称空间中3、在当前执行文件中拿到一个名字m1,该名字是指向模块的名称空间使用方法:指名道姓地访问m1名称空间中的名字func,优点是不会与当前名称空间中的名字冲突,缺点是每次访问都需要加上前缀m1.funcfrom ... import首次from m1 import func导入模块都发生三件事:1、先创建一个模块的名称空间2、执行m1.py,将执行过程中产生的名称都放入模块的名称空间中3、在当前执行文件中直接拿到一个功能名func,该名字是直接指向模块名称空间中的某一个功能的使用方法:直接使用功能即可,优点是无需加任何前缀,缺点是容易与当前名称空间中的名字冲突def func():passfunc()4、模块的搜索路径内存-》内置模块-》sys.path5、软件开发的目录规范今日内容1、模块的另外一种形式->包(****2、常用模块logging日志模块时间模块random模块json与pickle模块
View Code

 

1、什么是包包是模块的一种形式,包的本质就是一个含有__init__.py文件的文件夹2、为什么要有包3、如何用包导入包就是在导包下的__init__.pyimport ...from ... import...注意的问题:1、包内所有的文件都是被导入使用的,而不是被直接运行的2、包内部模块之间的导入可以使用绝对导入(以包的根目录为基准)与相对导入(以当前被导入的模块所在的目录为基准)推荐使用相对导入3、当文件是执行文件时,无法在该文件内用相对导入的语法只有在文件时被当作模块导入时,该文件内才能使用相对导入的语法4、凡是在导入时带点的,点的左边都必须是一个包import aaa.bbb.m3.f3 # 错误
View Code

 

日志模块

# import logging
# 进行基本的日志配置
# logging.basicConfig(filename='access.log',
#                     format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
#                     datefmt='%Y-%m-%d %H:%M:%S %p',
#                     level=10,
#                     # stream=True
#                     )# 日志级别遵循原则:自下而上进行匹配 #debug-》info-》warning-》error-》critical
# logging.debug('调试信息') #10
# logging.info('正常信息') #20
# logging.warning('不好啦着火啦') #30
# logging.error('报错信息') #40
# logging.critical('严重错误信息') #50# 问题:
#1、没有指定日志级别
#2、没有指定日志格式
#3、只能往屏幕打印,没有写入文件# 新问题
#1、不能指定字符串编码
#2、只能往文件中打印import logging
# logging模块包含四种角色:logger,filter,formatter,handler
#1、logger:负责产生日志信息
logger1=logging.getLogger('交易日志')
# logger2=logging.getLogger('用户相关')#2、filter:负责筛选日志#3、formatter:控制日志输出格式
formatter1=logging.Formatter(fmt='%(asctime)s:%(name)s:%(levelname)s:%(message)s',datefmt='%Y-%m-%d %X'
)
formatter2=logging.Formatter(fmt='%(asctime)s:%(message)s',datefmt='%Y-%m-%d %X'
)#4、handler:负责日志输出的目标
h1=logging.FileHandler(filename='a1.log',encoding='utf-8')
h2=logging.FileHandler(filename='a2.log',encoding='utf-8')
sm=logging.StreamHandler()#5、绑定logger对象与handler对象
logger1.addHandler(h1)
logger1.addHandler(h2)
logger1.addHandler(sm)#6、绑定handler对象与formatter对象
h1.setFormatter(formatter1)
h2.setFormatter(formatter1)
sm.setFormatter(formatter2)#7、设置日志级别:可以在两个关卡进行设置logger与handler
logger1.setLevel(10)
h1.setLevel(10)
h2.setLevel(10)
sm.setLevel(10)logger1.info('Egon借给李杰100W')
View Code
"""
logging配置
"""
import os
import logging.config# 定义三种日志输出格式 开始
standard_format = '%(asctime)s - %(filename)s:%(lineno)d - %(levelname)s - %(message)s'simple_format = '%(asctime)s - %(levelname)s - %(message)s'id_simple_format = '[%(asctime)s] %(message)s'# log文件的全路径
logfile1_path = r'D:\SH_fullstack_s2\day17\a1.log'
logfile2_path = r'D:\SH_fullstack_s2\day17\a2.log'# log配置字典
LOGGING_DIC = {'version': 1,'disable_existing_loggers': False,'formatters': {'formatter1': {'format': standard_format},'formatter2': {'format': simple_format},},'filters': {},'handlers': {#打印到终端的日志'sm': {'level': 'DEBUG','class': 'logging.StreamHandler',  # 打印到屏幕'formatter': 'formatter2'},#打印到文件的日志,收集info及以上的日志'h1': {'level': 'DEBUG','class': 'logging.FileHandler',  # 保存到文件'formatter': 'formatter1','filename': logfile1_path,  # 日志文件'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
        },'h2': {'level': 'DEBUG','class': 'logging.FileHandler',  # 保存到文件'formatter': 'formatter1','filename': logfile2_path,  # 日志文件'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
        },},'loggers': {#logging.getLogger(__name__)拿到的logger配置'logger1': {'handlers': ['h1','h2','sm'],'level': 'DEBUG','propagate': False,  # 向上(更高level的logger)传递
        },},
}
logging的用法

 

转载于:https://www.cnblogs.com/xujinjin18/p/9198956.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452269.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

面向对象方法学的优点

1.与人类习惯的思维方法一致面向对象的软件技术以对象为核心,用这种技术开发出的软件系统由对象组成。对象是由描述内部状态表示静态属性的数据,以及可以对这些数据施加的操作(对象的动态行为),封装在一起所构成的统一体。面向对象的设计方法…

如何学好C语言

我相信,这可能是很多朋友的问题,我以前也有这样的感觉,编程编到一定的时候,发现能力到了瓶颈,既不深,也不扎实,半吊子。比如:你长期地使用Java和.NET ,这些有虚拟机的语言…

学成在线--5.CMS页面管理开发(修改页面)

文章目录1.修改页面流程1)前端逻辑2)后端逻辑2.修改页面接口定义3.后端开发--Dao4.后端开发--Service5.后端开发--Controller1)根据id查询页面2)保存页面信息6.前端开发--页面处理流程7.前端开发--编写page_edit.vue8.前端开发--配…

在树莓派上播放音频

https://blog.csdn.net/qinxiandiqi/article/details/39155593转载于:https://www.cnblogs.com/Baronboy/p/9206164.html

Map四种获取key和value值的方法,以及对map中的元素排序

2019独角兽企业重金招聘Python工程师标准>>> 获取map的值主要有四种方法,这四种方法又分为两类: 一类是调用map.keySet()方法来获取key和value的值, 另一类则是通过map.entrySet()方法来取值, 两者的区别在于,前者主要…

配置Oracle Instant Client环境

1.配置Oracle Instant Client环境 到Oracle官网下载Oracle Instant Client,注意选择x86平台,Toad只认32位的Oracle Instant Client。至于版本号,没有特别要求,版本向下兼容。 桌面上,右键点“我的电脑”,选…

学成在线--6.CMS页面管理开发(删除页面)

文章目录0.删除用户逻辑1.删除页面接口定义2.后端开发--Dao3.后端开发--Service4.后端开发--controller5.前端开发--page_list.vue添加删除按钮6.前端开发--page_list.vue编写删除事件7.后端开发--Api方法定义Api方法0.删除用户逻辑 1)前端逻辑 (1&…

诺基亚是“不跟随”还是跟不上?

在Android和iPhone为主流的环境下,诺基亚用“不跟随”的口号表明自己欲保持个性,但是否也意味着其固步自封,跟不上时代? 5年市值缩水超900亿欧元,全球业绩连续4个季度亏损,更为可怕的是,被视为…

HTTP 协议(详解)

HTTP协议简介:HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于万维网(www.world wide web)服务器与本地浏览器之间传输文本的传输协议。 http请求协议与相应协议HTTP协议包含浏览器发送数据到服务器需要遵循…

对象的特点

对象有如下一些基本特点。(1) 以数据为中心。操作围绕对其数据所需要做的处理来设置,不设置与这些数据无关的操作,而且操作的结果往往与当时所处的状态 (数据的值)有关。 (2) 对象是主动的。它是进行处理的主体。不能从外部直接加工它的私有数据&a…

React Native集成Redux框架讲解与应用

学过React Native的都知道,RN的UI是根据相应组件的state进行render的,而页面又是由大大小小的组件构成,导致每个组件都必须维护自身的一套状态,因此当页面复杂化的时候,管理state会相当吃力的。而redux提供了一套机制来…

【笔试记录】2021/3/10阿里

阿里20210310春招笔试记录-Python解题 第一题 问题描述: 小偷从出发点按指定方向出发,除非遇到墙或超出城市必须转方向,不然只能直走。城市大小m*n。输入描述: 1. 第1行,三个数字m n k;m*n表示城市大小&…

Spring mvc中@RequestMapping 6个基本用法小结

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 小结下spring mvc中的RequestMapping的用法。 1)最基本的,方法级别上应用,例如: …

学成在线--7.CMS页面管理开发(异常处理)

文章目录1.异常处理的问题分析2.异常处理流程3.可预知异常处理1.自定义异常类2.异常抛出类3.异常捕获类4.异常处理测试1)定义错误代码2)异常处理测试4.不可预知异常处理1.定义异常捕获方法1)异常抛出测试2)异常捕获方法1.异常处理…

函数重载与运算符重载

有两种重载:函数重载是指在同一作用域内的若干个参数特征不同的函数可以使用相同的函数名字;运算符重载是指同一个运算符可以施加于不同类型的操作数上面。就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型…

Django(6)

为什么不用_set related_name和related_query_name的区别related_name将成为相关对象的属性,允许您使用外键对模型进行“倒退”。例如,如果ModelA有像下面这样的字段,那么model_b ForeignKeyField(ModelB, related_namemodel_as)这将使您能够…

P5 RV1126编码测试Demo

目录 前言 01 测试Demo大致流程图 02 代码分析 2.1 VI设备初始化 2.2 使能通道 —— RK_MPI_VI_EnableChn 2.3 VI 和 VENC绑定 2.4 创建 编码线程 前言 从本章开始我们将要学习嵌入式音视频的学习了 ,使用的瑞芯微的开发板 🎬 个人主页&#xff1a…

MP算法和OMP算法及其思想

主要介绍MP(Matching Pursuits)算法和OMP(Orthogonal Matching Pursuit)算法[1],这两个算法虽然在90年代初就提出来了,但作为经典的算法,国内文献(可能有我没有搜索到)都仅描述了算法步骤和简单的应用,并未对其进行详尽的分析&…

【牛客刷题记录】2021-03-10

牛客代码刷题记录1 问题一 给定一个数组序列, 需要求选出一个区间, 使得该区间是所有区间中经过如下计算的值最大的一个: 区间中的最小数 * 区间所有数的和最后程序输出经过计算后的最大值即可,不需要输出具体的区间。如给定序列 [6 2 1]则根据上述公式…

SpringMVC详细示例实战教程

一、SpringMVC基础入门&#xff0c;创建一个HelloWorld程序 1.首先&#xff0c;导入SpringMVC需要的jar包。 2.添加Web.xml配置文件中关于SpringMVC的配置 123456789101112131415<!--configure the setting of springmvcDispatcherServlet and configure the mapping-->&…