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 ...
随机推荐
- 嵌套矩形——DAG上的动态规划
有向无环图(DAG,Directed Acyclic Graph)上的动态规划是学习动态规划的基础.非常多问题都能够转化为DAG上的最长路.最短路或路径计数问题. 题目描写叙述: 有n个矩形,每一个矩 ...
- POJ 2375 Cow Ski Area (强连通分量)
题目地址:POJ 2375 对每一个点向与之相邻并h小于该点的点加有向边. 然后强连通缩点.问题就转化成了最少加几条边使得图为强连通图,取入度为0和出度为0的点数的较大者就可以.注意,当强连通分量仅仅 ...
- 【BIEE】09_BIEE控制台乱码问题解决
BIEE安装完成后,点击[启动BI服务] 接着从弹出窗口可以发现,全部汉字都是乱码 出现这种情况,想看一下BIEE启动情况是很费劲的,接着我们处理一下这个问题 1.从路径D:\obiee\user_p ...
- NSTimer注意内存泄露(真该死)
NSTimer可以用来执行一些定时任务,比较常用的方法就是: + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTar ...
- Android+git+hudson+gradle持续集成
linux 主机 android sdk安装忽略 jdk安装忽略 hudson安装忽略 gradle安装 1:下载相应的gradle(这里是gradle-2.10-all.zip) 2 : 解 ...
- Linux Mint (应用软件— 虚拟机:Virtualbox)
近期想自己折腾一下Linux系统本身.比方Linux裁减或者移植.裁减或者移植Linux是一件麻烦的事情.而且出错后会影响到当前的系统.怎样才干不影响当前机器上的系统呢,于是便想到了虚拟机.在当前系统 ...
- shell 判断问题总结
#!/bin/bash #比如需要判断一个变量是否含有值: if [[ -z $1 ]] ; thenecho "Something like empty!"exit 0;fi # ...
- php优化(php.ini)
PHP优化 ------------------------------------- 尽量选择php5.4及以上的版本,里面很多优化参数已经移除了相比以前版本 1.引擎解析优化和加速 1)eac ...
- idea各种设置和学习
1. 去掉方法中的参数名提示 idea在Review时候的编码设置 idea在review代码的时候会会出现中文乱码,文件是GBK的,但是idea的字符集和项目的字符集都是UTF-8, 这时可以通过把 ...
- 开发app应用的开源项目推荐
app检测内存泄漏 请看这里:LeakCanary Android 和 Java 内存泄露检测 app应用想要控制状态栏 StatusBarUtil :https://github.com/laobi ...