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 ...
随机推荐
- Dynamics CRM 2015/2016 Web API:Unbound Action 和 Bound Action
上篇文章介绍了Bound/Unbound Function.今天我们来看看Action吧.像我之前说的:Function和Action之前的差别能够简单理解为.Function不改动数据,可是Acti ...
- 《学习bash》笔记--进程处理
1.进程ID和作业编号 当通过附加&号后执行命令时.shell会响应例如以下: $ ls & [1] 3318 当中[1]是作业号,3318是进程号. 一个后台进程完毕时.shell ...
- Jscript 随记
1.Jscript 不能用来编写独立执行的应用程序,而且没有对读写文件的内置支持. 2.注意,语句块中的原始语句以分号结束.但语句块本身并不以分号结束. 3.注意,Jscript 与 C++ 以及其它 ...
- Nginx:管理HTTP模块的配置项
参考资料<深入理解Nginx> 一个nginx.conf的例子 http { mytest_num ; server { server_name A; listen ; mytest_nu ...
- PIVOT 和 UPIVOT 的使用(行转列)
PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执行聚合.UNPIVOT 与 PIVOT 执行相反的操作,将表值表达式的列转换为列 ...
- 【Cocosd2d-x CCMenu菜单之二】
菜单项CCMenuItem是一个基类. 子类CCMenuItemFont.CCMenuItemLabel.CCMenuItemSprite.CCMenuItemToggle可增加CCMenu中形成菜单 ...
- 初识C++之虚函数
1.什么是虚函数 在基类中用virtual关键字修饰.并在一个或多个派生类中被又一次定义的成员函数.使用方法格式为: virtual 函数返回类型 函数名(參数表) { 函数体 } 虚函数是实现多态性 ...
- 清华EMBA课程系列思考之三 -- 中国经济与金融
清华EMBA的第三次课,大家都已经渐渐了解了课程系列的基本节奏,也逐步适应了思考的基本思路,本次课程涉及到的全部内容都非常专业.闲话少述,直入主题了. 李稻葵教授部分: -- 清华大学经济管理学院弗里 ...
- webpack 功能大全 【环境配置】
1. webpack简介 webpack 是一个模块打包工具.它使得模块相互依赖并且可构建等价于这些模块的静态资源.相比于已经存在的模块打包器(module bundler),webpack的开发动机 ...
- 标准库 - 输入输出处理(input and output facilities) lua
标准库 - 输入输出处理(input and output facilities)责任编辑:cynthia作者:来自ITPUB论坛 2008-02-18 文本Tag: Lua [IT168 技术文档] ...