day18 回顾logging 学习了time datetime pickle sys

昨日回顾

1.规范目录结构

是为了更好的管理代码文件

提高项目的维护性和可读性

bin 执行文件

core 业务逻辑

conf 配置

db 数据处理相关的

lib    公共代码和第三方模块

log    日志文件

readme 软件的说明文档

 

如果执行文件不在项目根目录 需要添加项目根目录到sys.path

调用业务逻辑

 

2.logging模块

程序日志是 什么时间发生了什么事情 以及当时的情况

不是用logging的话 记录日志的流程

1定义一条日志信息  

    指定日志的标识符(即级别),方便后续查看日志

2为其指定显示格式 

3输出到文件或者控制台

 

LOGGING模块使用不同对象来完成上述几个步骤

    logger完成第一步 生成一个日志,并指定级别

    多出来filter用于 过滤日志(面向对象)

    formatter完成第二步

    handler完成第三部    

 

如果每次获取的生成器如果已经存在,则不会创建新的 直接将之前的给你

 

今日回顾

1.time模块

用户处理时间相关

1.获取时间

2.不同格式的时间转换

3sleep函数

import time

#浮点型的时间戳 从unix元年开始到现在的秒数

print(time.time())#通常用于计算时间差 不会直接给用户看

#美国的显示格式

print(time.asctime())#格林威治时间 格式

print(time.ctime())#格林威治时间 格式

#都是结构化时间(把时间拆开为不同部分)

print(time.gmtime())#世界时间 比中国时间晚了8小时

print(time.localtime())#获取本地时间

#从结构化时间转为时间戳

print(time.mktime(time.localtime()))

#将格式时间转为格式化字符串时间

print(time.strftime(%Y-%m-%d %H:%M:%S,time.localtime()))

#结构化时间 可以单独获取某一个 比如年份 月月

print(time.localtime().tm_year)

#从字符串转为结构话

print(time.strptime('20109-01-23 10:48:22','%Y-%m-%d %H:%M:%S'))

2.datetime模块

#获取当前时间 会根据时间自动转换

print(datetime.datetime.now())

#创建datetime对象 指定时间

print(datetime.datetime.(year=2019,month=1,day=23))

#两个datetime可以进行减法运算 并且只能减

d1=datetime.datetime.(year=2019,month=1,day=23)

d2=datetime.datetime.(year=2019,month=1,day=24)

print(d2-d1)

#可以单独获取某个部分

print(d2.hour)

#时间差对象 表示30天

import  datetime

dl=datetime.timedelta(days=30)

#三十天以后是什么日子 时间差可以与datetime进行+或者-

print(datetime.datetime.now()+dl)

#时间差对象 表示30天

import  datetime

dl=datetime.timedelta(days=30)

#三十天以后是什么日子 时间差可以与datetime进行+或者-

print(datetime.datetime.now()+dl)

#两个时间差可以进行加减除

d1=datetime.timedelta(days=30)

d2=datetime.timedelta(days=30)

print(d2-d1)

3.random模块

random 随机数相关模块

计算机中的随机数都是伪随机

随机数是通过一个算法根据一个种子数得来的

只要知道了种子数 随机数的结果就是固定的

默认是使用当前的时间戳作为种子数

# (0,1) 不包含1和0

print(random.random())

#既包含开始也包含结束 整形

print(random.randint(1,10))

#闭开 包含开始不包含结束   

print(random.randrange(1,10))

#闭开 包含开始不包含结束

print(random.randrange(1,10))

# 不包含1的随机浮点数

print(random.uniform(0,1))

#choice 充列表中随机选一个   

print(random.choice([1,2,3]))

#从列表中随机选择指定个数

print(random.sample([1,2,3,4,5],2))

#打乱顺序 (洗牌)

l=[1,2,3,4,5]   

random.shuffle(l)

print(l)

随机生成验证码

4.sys

system 代表的不是操作系统 二是解释器自己

#获取\添加环境变量

print(sys.path)

#获取调用解释器时传递的参数 第一个永远是执行文件的本身

print(sys.argv)

#立即退出解释器

# 状态码可以自定义,执行成功为0

# sys.exit(0)

#查看已经加载的模块

print(sys.modules)

#查看当前的平台

print(sys.platform)

#当前整数可以保存的最大值

print(sys.maxsize)获取int最大值 在python中没有长度限制

#获得解释器版本

print(sys.version)

5.pickle

是一个序列化模块

序列化指的是把一种数据类型转换成另一种数据类型, 目的是为了传输和存储数据

pickle 模块序列化得到的制备能pickle来反序列

若果你写的是一个单机程序 可以使用该模块   

对于网络应用而言, 我们需要一种任何语言平台都能是被的数据类型

这就是json xml

dumps是将python数据类型转为自己诶

dunp 封装了write函数的调用

loads 是将字节转为python类型

load封装了read函数的用掉

#序列化过程 就是从python数据类型转换为中间类型

dic={'name':'egon','age':10}

    res=pickle.decode_long(dic)

        with open('xxx','wb') as f

            f.write(res)

 

with open('xxx','wb') as f

pickle.dump()

# 反序列化 指的是中间数据类型 恢复到python数据类型

with open('xxx','rb') as f :

    date=pickle.loads(f.read())

    print(date)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值