python基础12 ---函数模块2
函数模块
一、sys函数模块详解
1、sys.argv[x]
功能:从程序外部接受参数,接收的参数个数可以是多个,在程序内部sys.argv吧这些外部参数转换成元组的形式,然后以索引x的方式在内部取出并应用。当x=0的时候程序内部取出的是该文件的绝对路径,当x=1的时候程序内部取出的是外部程序传入的第一个参数,以此类推。
2、sys.exit(n)
功能:当函数调用该模块时, 引发一个 SystemExit异常,若没有捕获这个异常,Python解释器会直接退出;捕获这个异常可以做一些额外的清理工作。0为正常退出,其他数值(1-127)为不正常,可抛异常事件供捕获。而os._exit() 直接退出 python程序,其后的代码也不会继续执行.
3、sys.path
功能:用于指定第三方模块和自定义模块的搜索路径以及搜索顺序。所以自己写的函数模块应当放到sys.path指定的模块路径中去,如果不想放也可以把自定义的模块路径通过sys.path.append('引用的模块路径')的方式添加到需要应用该模块的文件中去。
注:如果创建一个以.py结尾的文件名和第三方模块以及自定义模块重名时,当在该文件相同路径下调用重名的模块时,一定会报错。
二、logging模块
1、logging.basicConfig函数
1.1 通过logging.basicConfig函数对日志的输出格式及方式做相关配置
import logging
logging.basicConfig(level=logging.DEBUG,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%a, %d %b %Y %H:%M:%S',
filename='myapp.log',
filemode='w')
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')
1.2 logging.basicConfig函数配置说明
filename: 指定日志文件名
filemode: 和file函数意义相同,指定日志文件的打开模式,'w'或'a'
format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
%(levelno)s: 打印日志级别的数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程ID
%(threadName)s: 打印线程名称
%(process)d: 打印进程ID
%(message)s: 打印日志信息
datefmt: 指定时间格式,同time.strftime()
level: 设置日志级别,默认为logging.WARNING
stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略
2、日志默认的等级顺序
日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,当然也可以自己定义日志级别。
3、logging的四大类
logger:提供日志接口,供应用代码使用。logger最长用的操作有两类:配置和发送日志消息。可以通过logging.getLogger(name)获取logger对象,如果不指定name则 返回root对象,多次使用相同的name调用getLogger方法返回同一个logger对象。
handler:将(logger创建的)日志记录发送到合适的目的输出;个logger对象可以通过addHandler方法添加0到多个handler,每个handler又可以定义不同日志级别,以实现 日志分级过滤显示。
filter:提供了细度设备来决定输出哪条日志记录;即提供一种优雅的方式决定一个日志记录是否发送到handler。
formatter:决定日志记录的最终输出格式。formatter的构造方法需要两个参数:消息的格式字符串和日期字符串,这两个参数都是可选的。
4、四大类详解
4.1 创建一个logger 》》》logger = logging.getLogger()
4.2 创建一个handler,用于写入日志文件 》》》fh = logging.FileHandler('文件的绝对路径或者是相对路径')
创建一个handler,用于输出到控制台 》》》ch = logging.StreamHandler() #由于是输出到控制台所以括号内不写内容更
4.3 定义handler的输出格式formatter
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
4.4 定义一个filter
filter = logging.Filter('mylogger.child1.child2')
fh.addFilter(filter)
4.5 给logger添加handler 》》》logger.addFilter(filter)
4.6记录一条日志
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')
三、序列化模块
1、序列化的定义:由于存在于内存中的对象都是暂时的,无法长期驻存,为了把对象的状态保持下来,这时需要把对象写入到磁盘或者其他介质中,这个过程就叫做序列化。
2、反序列化的定义:把序列化后的对象从新读取到内存中称之为反序列化。(从磁盘和其他介质中读取出来)
3、python中可以使用 Pickle 和 json, 以及自定义序列化反序列化函数进行处理需要序列化的数据。json只能处理一些简单的数据序列化,建议使用Pickle。
4、json模块序列化和反序列化详解。
4.1json的dumps方法和loads方法,可实现数据的序列化和反序列化。具体来说,dumps方法,可将json格式数据序列为python的相关的数据类型;loads方法则是相反,把python数据类型转换为json相应的数据类型格式要求。
4.2格式:json.dumps(序列化对象) #只能序列化一些简单的对象,序列化后的对象是用双引号引起来的
json.loads(反序列化对象)#反序列化的对象必须是用双引号引起来,且必须先序列化后才能反序列化
4.3步骤:1.先序列化对象 2.把序列化成的字符串写入文件
1.先打开序列化的文件 2.反序列化文件对象
5、pickle模块序列化和反序列化
5.1过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存
5.2格式:pickle.dump(序列化文件对象,序列化文件对象保存位置文件)#吧序列化对象保存在文件中需要以wb二进制的形式保存。
pickle.load(打开后的反序列化对象文件)#使用的时候只需要以rb二进制的形式把文件打开,然后用pickle.load读取数据就可以了。
5.3步骤:1.先打开文件,再序列化对象
2.先打开文件,再反序列化
注:无论是哪个模块序列化和反序列化打开的文件都需要打开后及时关闭。
python基础12 ---函数模块2的更多相关文章
- python基础11 ---函数模块1
函数模块 一.函数模块的作用(为什么要有函数模块) 1.函数模块可以减少代码量 2.函数模块方便阅读 3.函数模块维护性强二.函数模块的本质以及调用方法 1.函数模块的本质就是一个.py结尾的文件,该 ...
- 2015/9/15 Python基础(12):模块和包
模块是用来组织 Python 代码的方法,而包则是用来组织模块的. 当代码量很大时,我们一般会把代码分成几个有组织的代码段,然后每个代码段之间有一定的联系.代码单之间是共享的,所以Python允许调入 ...
- python基础14 ---函数模块5(模块和包)
模块与包 一.模块 1.模块是怎么诞生的. 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护.为了编写可维护的代码,我们把很多函数分组,分别放到 不同的文 ...
- python基础13 ---函数模块3(正则表达式)
正则表达式 一.正则表达式的本质 1.正则表达式的本质(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的 ...
- python基础(12):函数(二)
1. 函数参数 之前我们说过了传参,如果我们需要给⼀个函数传参,⽽参数⼜是不确定的,或者我给⼀个函数传很多参数,我的形参就要写很多,很⿇烦,怎么办呢,我们可以考虑使⽤动态参数. 形参的第三种: 动态参 ...
- python基础14 ---函数模块4(configparser模块)
configparser模块 一.configparser模块 1.什么是configparser模块:configparser模块操作配置文件,配置文件的格式与windows ini和linux的c ...
- python基础——filter函数
python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...
- 十八. Python基础(18)常用模块
十八. Python基础(18)常用模块 1 ● 常用模块及其用途 collections模块: 一些扩展的数据类型→Counter, deque, defaultdict, namedtuple, ...
- python基础31[常用模块介绍]
python基础31[常用模块介绍] python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的. 常用的li ...
随机推荐
- 3D版翻页公告效果
代码地址如下:http://www.demodashi.com/demo/12830.html 前言: 在逛小程序蘑菇街的时候,看到一个2D版滚动的翻页公告效果.其实看到这个效果的时候,一点都不觉得稀 ...
- Android中ProgressBar
ProgressBar提供如下方法来操作进度: setProgress(int):设置进度完成的百分比; incrementProgressBy(int):设置进度条的进度的增加或减少,具体取决于参数 ...
- TMS320C6455 SRIO 实现方案
TMS320C6455 SRIO 实现方案 SRIO(Serial RapidIO)构架是一种基于高性能包交换的互连技术,主要功能是完成在一个系统内的微处理器.DSP.通信和网络处理器.系统存储器以及 ...
- 二路归并排序的java实现
转载请注明出处 http://www.cnblogs.com/dongxiao-yang/p/6410775.html 参考引言:在排序算法中快速排序的效率是非常高的,但是还有种排序算法的效率可以与之 ...
- 利用NIO的Selector处理服务器-客户端模型
package NIOTEST; import java.io.IOException; import java.net.InetAddress; import java.net.InetSocket ...
- webview长按保存图片
private String imgurl = ""; /*** * 功能:长按图片保存到手机 */ @Override public void onC ...
- css3 jQuery实现3d搜索框+为空推断
<!DOCTYPE html> <html> <head> <title>css3实现3d搜索框</title> <style> ...
- centos7设置ip
centos7不能再通过setup命令来设置ip了,但可以通过修改网卡配置文件来设置ip 在/etc/sysconfig/network-scripts目录下找到网卡配置文件,修改之前内容如下 TYP ...
- Python 内建的filter()函数用于过滤序列。
例如,在一个list中,删掉偶数,只保留奇数,可以这么写: def is_odd(n): return n % 2 == 1 list(filter(is_odd, [1, 2, 4, 5, 6, 9 ...
- 多媒体开发之---开源库ffmeg的log之子解析
用了ffmeg快两年了,对其中的log甚是感兴趣,今天在做8148项目是,解读h264结构,看了<毕-新一代视频压缩编码标准h246> ,在第六章中的重排序里面看到了好熟悉的4x4矩阵zi ...