Python 常用模块二

time模块:

结构化时间:将时间拆开,以年月日时分秒的形式展示

字符串时间:例如2018-5-6 17:20:31  这样的就是字符串时间

import time
 
# 结构化输出本地时间 
print(time.localtime())
>>>time.struct_time(tm_year=2018, tm_mon=8, tm_mday=27, tm_hour=17, tm_min=14, tm_sec=21, tm_wday=0, tm_yday=239, tm_isdst=0)

# 将结构化时间转换成时间
print(time.mktime(time.localtime()))
print(time.time())  # 输出时间戳,和上面结果一样
>>>1535361402.0
>>>1535361402.3332605

# 结构化时间转换字符串时间
# %Y、%m、%d---->代表年、月、日,%X--->时、分、秒
print(time.strftime('%Y+++%m++%d++%X', time.localtime()))
>>>2018+++08++27++17:20:20

# 字符串时间转换结构化时间,中间的'++'可以随便改写
print(time.strptime('2018+++08++27++17:20:20','%Y+++%m++%d++%X'))
>>>time.struct_time(tm_year=2018, tm_mon=8, tm_mday=27, tm_hour=17, tm_min=20, tm_sec=20, tm_wday=0, tm_yday=239, tm_isdst=-1)

logging模块:

日志的五个级别:debug、info、warning、error、critical  从低到高的顺序

第一种写日志的姿势(low):

import logging

# config   配置的意思
logging.basicConfig(
    level=logging.DEBUG,  # 定义最低的提示级别
    filemode= 'w',  # 定义模式
    filename='lab.ini',  # 定义输出文件名,输出文件默认采用追加的模式
    # 日志的格式%(显示内容)s 格式固定
    format = '%(asctime)s, %(lineno)s'  # 定义打印的内容,及格式。 asctime 是显示本地时间,lineno显示第几行打印的报错日中信息
)

# 上面不定义最低级别,默认最低级为warning
# 打印错误信息
logging.debug('message error')

>>>message error

第二种写日志的姿势:

创建一个logger对象,logger对象什么能力也没有,通过吃其他的来获得别人的功能。

import logging

# 实例logger对象 root是用户名,可以不写
logger = logging.getLogger('root')
# 设置报错的最低等级
logger.setLevel(level='DEBUG')
# 创建一个字节流的文件发送
fh = logging.FileHandler('lab.ini')
# 创建一个流输出到屏幕显示
fs = logging.StreamHandler()
# 设置日志的打印格式
ff = logging.Formatter('%(lineno)s,%(asctime)s')
# 让输出到文件和屏幕吃掉打印格式,让其具有打印格式的功能
fh.setFormatter(ff)
fs.setFormatter(ff)
# 让logger吃掉输出到文件和屏幕
logger.addHandler(fh)
logger.addHandler(fs)
logger.debug('message error')

>>>message error

子logger在输出时会查看父logger有没有输出,如果父logger有输出就自己在打印自己一边

import logging

# 创建一个父logger,什么也不加默认是夫logger
logger = logging.getLogger()
# 创建一个子logger
logger1 = logging.getLogger('admin')
fs = logging.StreamHandler()
logger.addHandler(fs)
logger1.addHandler(fs)
logger.error('message error')
logger1.error('message 1')


>>>message error
   message 1
   message 1

json模块:

一个使数据序列化的模块

import json

# json.dumps()转换为json字符串 (里面全为双引号)
# 字符串
print(json.dumps('name:123'))
# 数字
print(json.dumps(1))
# 列表
print(json.dumps([1,2,3]))
# 字典
print(json.dumps({'name':'123'}))


>>>"name:123"
>>>1
>>>[1, 2, 3]
>>>{"name": "123"}

# 读一个json文件,如果文件有单引号,就会报错,不能有单引号
# loads方法
with open('tests1', 'r') as f:
    print(json.loads(f.read()))

# load方法,只需要把句柄扔进去
with open('tests1', 'r') as f:
    print(json.load(f))


# dump方法,dic是要写入的内容
dic = {'name':123}
with open('tests1', 'a') as f:
    print(json.dump(dic,f))

猜你喜欢

转载自blog.csdn.net/weixin_41678001/article/details/82116269