内建模块(二)

一、logging模块
二、序列化模块

一、logging模块

简化日志格式,实现日志打印,打印到屏幕,存储到文件中

import logging
#因为有等级区别,所以默认显示warning以及以上日志,以下等级由高到低降序排列
logging.debug()
logging.info()
logging.warning()
logging.error()
logging.critical()

日志配置格式配置有两种方式:config和logger对象

1.connfig:只能将日志写入文件,不能同时打印到屏幕
logging.basicConfig(level=logging.DEBUG, #默认等级
                    format='%(asctime)s [%(lineno)s] %(message)s', #显示内容
                    datefmt='%Y-%m-%d %H:%M:%S', #显示时间格式
                    filename='logger.log', #写入文件路径
                    filemode='a' #写入模式
                    )
2.logger对象:默认追加写入,默认写入屏幕,可以同时输出到屏幕和文件
import logging

logger = logging.getLogger() #定义logger
logger.setLevel(logging.DEBUG) #设置输出等级
fm = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') #设置格式

#文件写入
fh = logging.FileHandler('logger2.log') #输出到文件声明对象fh
fh.setFormatter(fm) #fh对象获取格式
logger.addHandler(fh) #给对象fh添加logger对象

#屏幕写入
sh = logging.StreamHandler() #输出到屏幕声明对象sh
sh.setFormatter(fm) #sh对象获取格式
logger.addHandler(sh) #给对象sh添加logger对象
举例,可以封装到函数直接调用:
import logging
def get_logger():
    logger = logging.getLogger()  # 定义logger
    logger.setLevel(logging.DEBUG)  # 设置输出等级
    fm = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')  # 设置格式

    # 文件写入
    fh = logging.FileHandler('logger2.log')  # 输出到文件声明对象fh
    fh.setFormatter(fm)  # fh对象获取格式
    logger.addHandler(fh)  # 给对象fh添加logger对象

    # 屏幕写入
    sh = logging.StreamHandler()  # 输出到屏幕声明对象sh
    sh.setFormatter(fm)  # sh对象获取格式
    logger.addHandler(sh)  # 给对象sh添加logger对象
    return logger

a = get_logger()

a.debug('debug..')
a.info('info..')
a.warning('warning..')
a.error('error..')
a.critical('critical..')

二、序列化模块

json序列化
通过键值对,实现不同平台的数据交换

1.json模块

  1. 只有两个方法:序列化和反序列化
  2. 只要格式符合json格式,就和可以losds出来
  3. json不可以转换时间类型格式,datetime.datetime
    14932609220831.jpg
json不识别元组格式
json.dumps(1)
json.dumps('hello')
a = json.dumps((1,2,3))
json.dumps([1,234,4])
json.dumps({'name':'ale'})

print(json.dumps((1,2,3)))
print(json.loads(a))
序列化和反序列化的转换:json.dumps和json.loads
# d = {'河北':['保定','廊坊']}
d = {"hebei":['baoding','langfang']}

# 序列化、反序列化

s= json.dumps(d) #将字典d转换为json字符串 --序列化过程

f = open('new','w')
f.write(s)
f.close()
f = open('new')
date = f.read()
f.close()

date2 = json.loads(date) #--反序列化

#简化以上方式:dump

f = open('new2','w')
json.dump(d, f) #转化为json字符串,然后将字符串写入文件
f.close()

2.pickle模块

  1. 用于python间的数据交换,适用于python的任意数据类型
  2. pickle写入文件后,无法直接打开文件阅读
  3. pickle可以转换时间类型格式,datetime.datetime
序列化和反序列化的转换:pickle.dumps和pickle.loads
import pickle
import datetime

t = datetime.datetime.now() 
d = {'date':t} #带有时间格式的字典

#序列化、反序列化

s = pickle.dumps(d) #将字典转化为picle字符串---序列化

f = open('new5','wb')
f.write(s)
f.close()
f = open('new5','rb')
date = f.read() 
f.close()

date2 = pickle.loads(date) #---反序列化

#简化以上方式:dump

f = open('new4','wb')
pickle.dump(d, f) #---序列化
f.close()

f = open('new4','rb')
print(pickle.load(f)) #---反序列化
f.close()

转载于:https://www.cnblogs.com/sunqim16/p/6776271.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值