python——常用模块2
1 logging模块
1.1 函数式简单配置
import logging logging.debug("debug message") logging.info("info message") logging.warning("warning message") logging.error("error message") logging.critical('critical message')
输出结果为:
WARNING:root:warning message ERROR:root:error message CRITICAL:root:critical message
ps:
logging.warning ("warning message") 为默认等级方式
可见,默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET),默认的日志格式为日志级别:Logger名称:用户输出消息。
灵活配置日志级别,日志格式,输出位置:
import logging logging.basicConfig(level=logging.DEBUG, #logging basicConfig()函数中可通过具体参数来更改logging模块默认行为 format="%s(asctime)s [%s(lineno]s)%(message)s", datefmt="%Y-%m-%-d %H:%M:%S", filename="logger", filemode="a" #一般追加写 ) logging.debug("debug message") logging.info("info message") logging.warning("warning message") logging.error("error message") logging.critical("critical message")
配置参数:
logging.basicConfig()函数中可通过具体参数来更改logging模块默认行为,可有用参数有 format:指定handler使用的日志显示格式 datefmt:指定日期时间格式 filename:指定的文件名创建FileHandler,这样日志会被存储在指定的文件中。 filemode: 文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w” level,设置rootlogger的日志级别 stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件 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用户输出的消息
1.2 logger对象配置
import logging logger=logging.getLogger() #创建一个handler,用于写入日志文件 fh=logging.FileHandler("logger1") #在创建一个handler,属于输出到控制台 sh=logging.StreamHandler() formatter=logging.Formatter("%s(asctime)s-%(levelname)s-%(message)s") fh.setFormatter(formatter) sh.setFormatter(formatter) logger.addFilter(fh) #logger对象可以添加多个fh和sh对象 logger.addFilter(sh) 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")
logging库提供了多个组件:Logger、Handler、Filter、Formatter。Logger对象提供应用程序可直接使用的接口,Handler发送日志到适当的目的地,Filter提供了过滤日志信息的方法,Formatter指定日志显示格式。另外,可以通过:logger.setLevel(logging.Debug)设置级别。
2 序列化模块
json: JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。
JSON表示的对象就是标准的JavaScript语言的对象一个子集,JSON和Python内置的数据类型对应如下:
序列化(json.dumps)
import json d={"name":"egon"} s=json.dumps(d) #将字典d转成json字符串---序列化的过程 print(s)
f=open("new","w") f.write(s) f.close()
反序列化(json.loads)
f=open("new") data=f.read() data2=json.loads(data) #反序列化 print(data2["name"])
#dump方式 简化版 f=open("new2","w") json.dump(d,f) #---1.转成json字符串 2.将json字符串写入文件里 f.close()
import json i=10 s='hello' t=(1,4,6) l=[3,5,7] d={'name':"yuan"} json_str1=json.dumps(i) json_str2=json.dumps(s) json_str3=json.dumps(t) json_str4=json.dumps(l) json_str5=json.dumps(d) print(json_str1) #'10' print(json_str2) #'"hello"' print(json_str3) #'[1, 4, 6]' print(json_str4) #'[3, 5, 7]' print(json_str5) #'{"name": "yuan"}'
json的dumps,loads,dump,load功能总结:
json.dumps(x) 把python的(x)原对象转换成json字符串的对象,主要用来写入文件。
json.loads(f) 把json字符串(f)对象转换成python原对象,主要用来读取文件和json字符串
json.dump(x,f) 把python的(x)原对象,f是文件对象,写入到f文件里面,主要用来写入文件的
json.load(file) 把json字符串的文件对象,转换成python的原对象,只是读文件