zoukankan      html  css  js  c++  java
  • 模块之 logging模块 time 模块 random模块 sys模块 pickle模块

    1.如果执行文件不在项目根目录下,需要添加项目根目录到sys.path中
    2.调用业务逻辑

    2.logging模块
    程序日志是 什么时间发生了什么事情,以及当时的情况
    不是logging的话 记录日志的流程
    1.定义一条日志信息
    指定日志的标识符(即级别),方便后续查看日志
    2.为期指定显示格式
    3.输出到文件或者控制台

    logging模块使用不同对象来完成上述几个步骤
    logger完成第一步,生产第一个日志对象,并指定级别
    多出来的filter用于 过滤日志
    formatter完成第二步
    handler完成第三步

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

    time 模块
    用于处理时间相关的
    1.获取时间
    2.不同格式的时间转换
    3.sleep函数

    time.time() 浮点型的时间戳 从unix元年开始到现在的秒数
    通常用于计算时间差,不用直接给用户看

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

    都是结构化时间(把时间拆为不同的部分)
    print(time.gmtime()) 世界时间 比中国时间晚了八小时
    time.localtime 获取本地时间

    从结构化时间转为时间戳
    time.mktime(time.localtime()))

    将结构化时间转为格式化字符串时间
    print(time.strftime('%Y-%m %h:%m:%s',time.localti么())
    结构化可以单独获取某一个比如年份 月份
    print(time.localtime().time_year)

    print(time.striptime('2019-01-23 10:46:44','%Y-%m %h:%m:%s'))


    import datetime
    获取当前时间 会根据时区自动转换
    print(datetime.datetime.now())


    创建datetime对象, 指定时间
    print(datetime.datetime(2019,1,23))

    两个datetime可以进行减法运算,并且只能减
    d1=datetime.datetime(2019,1,23))
    d2=datetime.datetime(2019,1,24,10)
    print(d2-d1)

    可以单独获取某个部分
    print(day2.hour)

    时间差对象 表示30天
    datetime.timedelta(days=30)

    三十天以后是什么日子 时间差可以与datetime进行+和-
    print(datetime.datetime.now()+dl)


    两个时间差 可以进行+ - /


    random 随机数相关模块
    计算机中的随机数都是伪随机
    随机数是通过一个算法根据一个种子数计算得来的
    只要知道了种子数,随机数的结果就是固定的
    默认是使用当前的时间戳作为种子数
    import random
    print(random.random()) #从0-1 不包含1和0
    print(random.randint(1,2)) 闭闭 包含开始和结束
    print(random.randrange(1,3)) 闭开 包含开始不包含结束
    print(random.choice[1,2,3,4,5]) 从列表中随机选一个
    print(random.sample([1,2,3,4,5],2)) 从列表中随机选出指定的个数

    打乱顺序(洗牌)
    li=[1,2,3,4,5]
    random.shuffle(li)
    print(li)

    sys模块
    与解释器相关的一些操作
    system代表的不是操作系统而是解释器自己

    import sys
    获取/天机 环境变量
    print(sys.path)

    获取调用解释器时传递的参数 第一个永远是执行文件本身
    print(sys.argv)

    理解退出解释器
    状态码可以自定义 执行为0
    sys.exit(0)

    查看已经加载的所有模块
    print(sys.modules)

    print(sys.platform) 获取平台信息

    print(sys.version) 获取解释器版本




    pickle模块
    是一个序列化模块
    序列化指的是把一种数据类型转换成另一种数据类型 目的是为了传输或存储数据
    目的是为了 永久存储或是进行网络传输
    pickle 模块序列化得到的数据只能被pickle来反序列化
    如果你写的是一个单机程序 可以使用该模块
    对于网络应用程序而言我们需要一种任何语言平台都能识别的数据类型
    这就是json和xml

    序列化的过程 就是从python数据类型转换为中间类型
    反序列化 指的是从中间数据类型 恢复到python的数据类型

    dumps 将python数据类型转为字节
    dump 封装了write函数的调用(序列化)
    loads 是将字节转为python数据类型
    load 封装了read函数的调用(反序列化)
    pickle序列化得到的数据 不能跨平台
  • 相关阅读:
    kali BEEF-XSS启动报错解决
    kali msfconsole启动报错解决
    unittest详解(三) 简单元素定位
    unittest详解(二) 断言
    unittest详解(一) unittest框架
    selenuim python环境安装
    Locust 脚本练习
    Locust 参数化
    Locust 设置断言
    9-04嵌套事务及事务分类
  • 原文地址:https://www.cnblogs.com/gengbinjia/p/10316172.html
Copyright © 2011-2022 走看看