• day16 补充模块的循环导入问题 包的使用 序列化与反序列化的介绍 json模块的使用 pickle模块的使用 time与datetime 模块 random模块 shutil模块 shevle模块 xml模块以及其他模块介绍


    补充模块的循环导入的问题

    两种解决办法:

    第一种:变量的名字全部往上放,导入全部往下放,保证名字全部存在

    第二种:封装在函数里面,函数在定义阶段,只检测代码不运行代码

    包的使用

    1.什么是包

      包就是一个含有__init__.py文件的文件夹

    2.为何要用包

    3.如何用包

    导包其实是在导__init__  ,可以把分散于子文件里的功能,全部拿到__init__里面,从而屏蔽给使用者在使用上的变动

    环境变量在执行文件夹下

    绝对导入:

     相对导入 :

    绝对导入时通用的,相对导入是仅限在包内使用

    1.什么是序列化

      序列化就是将内存中的数据类型转成另外一种格式

      即:

        字典--------------序列化--------------其他的格式--------------存到硬盘

        硬盘------读取-------->其他格式----------反序列化------->字典

    2.为什么要序列化

      1.持久保存程序的运行状态

      2.数据的跨平台交互

    3.如何序列化

      json:

      优点:这种格式是一种通用的格式,所有的编程语言都能识别

      缺点:   不能识别所有的python类型

      强调:json格式不能识别单引号

     pickle:

      优点:能识别所有的python类型

      缺点:只能被python这门语言识别

    json模块与pickle模块实例

    # ========================json
    import json
    #
    dic={'k1':True,'k2':10,'k3':'egon','k4':'你好啊'}
    #
    # # # 序列化
    dic_json=json.dumps(dic)
    print(dic_json,type(dic_json)) #存的时候是json读的时候也是json  把他存到文件中,把你好啊存成json格式
    # #
    # # # 持久化
    # with open('a.json',mode='wt',encoding='utf-8') as f:
    #     f.write(dic_json)
    
    # 序列化+持久化
    # with open('a.json',mode='wt',encoding='utf-8') as f:
    #     json.dump(dic,f)
    
    # import json
    # # 从文件中读取json格式化的字符
    # with open('a.json',mode='rt',encoding='utf-8') as f:
    #     dic_json=f.read()
    #
    # # 反序列化
    # dic=json.loads(dic_json)
    # print(dic,dic['k1'])
    
    # 读取文件内容+发序列化
    # with open('a.json',mode='rt',encoding='utf-8') as f:
    #     dic=json.load(f)
    #     print(dic['k1'])
    
    # ========================pickle
    import pickle
    dic={'k1':True,'k2':10,'k3':'egon','k4':'你好啊',}
    
    #===========>1 pickle.dumps与pickle.loads
    
    # dic_pkl=pickle.dumps({1,2,3,4})
    # # print(dic_pkl)
    #
    # with open('b.pkl',mode='wb') as f:
    #     f.write(dic_pkl)
    
    # with open('b.pkl',mode='rb') as f:
    #     s_pkl=f.read()
    #     s=pickle.loads(s_pkl)
    #     print(type(s))
    
    #===========>2 pickle.dump与pickle.load
    # with open('c.pkl',mode='wb') as f:
    #     pickle.dump(dic,f)
    
    with open('c.pkl',mode='rb') as f:
        dic=pickle.load(f)
        print(dic,type(dic))
    

    时间模块

    import time
    
    时间分为三种形式
    1、时间戳,说白了就是时间的秒数表达形式
    print(time.time())
    start_time=time.time()
    time.sleep(3)
    stop_time=time.time()
    print(stop_time-start_time)
    
    2、格式化的字符串,更多是给人看的时间
    print(time.strftime('%Y-%m-%d %H:%M:%S %p'))
    print(time.strftime('%Y-%m-%d %X %p'))
    
    3、struct_time对象
    print(time.localtime()) # 上海:东八区
    print(time.localtime().tm_year)
    print(time.localtime().tm_mday)
    
    print(time.gmtime()) # UTC时区 世界标准时区
    
    了解的知识
    print(time.localtime(1111111111).tm_hour)
    print(time.gmtime(1111111111).tm_hour)
    
    print(time.mktime(time.localtime()))
    
    print(time.strftime('%Y/%m/%d',time.localtime()))
    print(time.strptime('2017/04/08','%Y/%m/%d'))
    
    print(time.asctime(time.localtime()))
    print(time.ctime(12312312321))

     datetime模块

    import datetime
    
    # print(datetime.datetime.now())
    # print(datetime.datetime.now() + datetime.timedelta(days=3)) #3天后
    # print(datetime.datetime.now() + datetime.timedelta(days=-3)) #3天前
    # print(datetime.datetime.now() + datetime.timedelta(hours=3))  #3个月之后
    # print(datetime.datetime.now() + datetime.timedelta(seconds=111))
    
    # current_time=datetime.datetime.now()
    # print(current_time.replace(year=1977))
    
    # print(datetime.date.fromtimestamp(1111111111))
    

      

    随机模块(random模块)

    import random
    print(random.random())#(0,1)----float    大于0且小于1之间的小数
    print(random.randint(1,3))  #[1,3]    大于等于1且小于等于3之间的整数
    print(random.randrange(1,3)) #[1,3)    大于等于1且小于3之间的整数
    print(random.choice([1,'23',[4,5]]))#1或者23或者[4,5]
    print(random.sample([1,'23',[4,5]],2))#列表元素任意2个组合
    print(random.uniform(1,3))#大于1小于3的小数,如1.927109612082716 
     
    item=[1,3,5,7,9]
    random.shuffle(item) #打乱item的顺序,相当于"洗牌"
    print(item)

    随机验证码

    import random
    def make_code(n):
        res=''
        for i in range(n):
            s1=chr(random.randint(65,90))
            s2=str(random.randint(0,9))
            res+=random.choice([s1,s2])
        return res
    
    print(make_code(9))

    打印进度条

    print('[                 ]')
    print('[##               ]')
    print('[###              ]')
    print('[####             ]')
    print('[#####            ]')
    
    print('[%-50s]' %'#')
    print('[%-50s]' %'##')
    print('[%-50s]' %'###')
    
    第一个%是取消第二个%号的特殊意义的
    num=30
    print('%s%%' %num)
    
    width=30
    print(('[%%-%ds]' %width) %'#')
    print(('[%%-%ds]' %width) %'##')
    print(('[%%-%ds]' %width) %'###')
    
    def progress(percent,width=50):
        if percent > 1:
            percent=1
        show_str=('[%%-%ds]' %width) %(int(width*percent) * '#')
        print('
    %s %d%%' %(show_str,int(100*percent)),end='')
    
    import time
    recv_size=0
    total_size=8097
    while recv_size < total_size:
        time.sleep(0.1)
        recv_size+=8096
        percent=recv_size / total_size
        progress(percent)

    shutil模块

    import shutil
    import time
    ret = shutil.make_archive(
        "day15_bak_%s" %time.strftime('%Y-%m-%d'),
        'gztar',
        root_dir=r'D:codeSH_fullstack_s1day15'
    )
    
    import tarfile
    t=tarfile.open('day15_bak_2018-04-08.tar.gz','r')
    t.extractall(r'D:codeSH_fullstack_s1day16解包目录')
    t.close()

    shevle模块

    xml模块

  • 相关阅读:
    PHP mysqli扩展库 预处理技术
    libevent入门(1)
    你的项目需要升级成64bit程序吗?
    [敏捷个人]个人知识管理
    [转]职业规划中的“我想要”和“我需要”
    《领导力》读书笔记
    http 传输原理及格式
    转载:Fiddler 教程
    Nginx 配置文件详解
    Wireshark
  • 原文地址:https://www.cnblogs.com/wangmiaolu/p/10053177.html
Copyright © 2020-2023  润新知