zoukankan      html  css  js  c++  java
  • 包--json 与 pickle 模块

    一. 包

      一个含有__init__.py 文件的文件夹(将py 文件中的内容划分成不同的部分放在不同的py 文件中,在将这些py 文件放在一个文件夹中)

      是模块,不做执行文件,仅做调用

    m1.py  和  m2.py  和__init__.py 同层级(同在aaa文件夹下)
    run.py 执行文件 与aaa文件夹同层级(执行文件要调用aaa文件夹里面m1.py 和m2.py 中的变量)
    
    m1.py 文件中:
    def func1():
        print('func1函数')
    
    m2.py 文件中
    def func2():
        print('func2函数')
    
    __init__.py 文件中:
    
    from aaa.m1 import func1
    from aaa.m2 import func2
    
    run.py 文件中调用:
    import aaa 
    aaa.func1()
    aaa.func2()
    
    总结: 在run.py 文件中import aaa 时先产生了名称空间,然后自动运行aaa文件夹下的 __init__.py 文件, 此时__init__.py 文件中已经导入了fu
    nc1 和 func2 函数, 因此在run.py 文件中可以直接调用func1 和 func2函数

    __init__.py 文件中绝对导入: 从包的顶级目录(aaa)开始查找

    __init__.py 文件中相对导入:只能在包内使用,仅限于包内模块彼此相互引用,用点 . 代替(当前)文件夹名

                 例: from .m1 import func1          from ..m3 import fff    一个点代表一级目录

    二. json 与 pickle模块: 解决序列化问题

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

        例如:字典====》其他格式======》存在硬盘

      反序列化: 将硬盘中的其他格式转回python java 等能识别的格式

       例如: 硬盘中的其他格式====》读取其他格式=====》 转换回字典类型

      序列化原因: 持久保存程序的运行状态

             数据的跨平台应用

      如何序列化: json 和 pickle

        json格式             python格式

        {}                          dict

        []        list              ==========》json 优点:是一种通用格式,所有编程语言都能识别(跨平台性好)

        1233       int  float      ==========》json  缺点:不能识别所有的python类型(不能识别集合类型)                  

        true/false             True/False         

        null                       None

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

       pickle 缺点: 只能被python这门编程语言识别(无法跨平台交互)

    例: 用json 将字典序列化存入内存
    
    d={'name':'egon','password':123}
    
    d_json=json.dumps(d)
    with open('r.txt','wt','utf-8') as f:
        f.write(d_json)
    
    方法二:  使用 dump()
    with open('r.txt','wb') as f:        ==============》 json 用途:持久保存程序的运行状态 和  数据的跨平台交互
        json.dump(d,f)
        
    
    # 将硬盘中的 json 格式转换为python中的字典
    
    with open('r.txt','rt') as f:
        dic_json=f.read()
        dic=json.loads(dic_json)
    
    方法二:
    with open('r.txt','rt') as f:
       d= json.load(f)
    用pickle将字典序列化成其他格式存入硬盘,然后将硬盘中的内容读出,然后将其再转换为python中的字典格式

    d={'name':'egon','password':123}

    d_pickle=pickle.dumps(d)
    with open('r.txt','wb') as f: # 只能用b模式
      f.write(d_pickle)

    方法二: dump()
    with open('r.txt','wb') as f: =========> pickle 唯一用途将数据存入硬盘
      pickle.dump(d,f)

    然后将其再转换为python中的字典格式
    with open('r.txt','rb') as f:
    d_pickle=f.read()
    d=pickle.loads(d_pickle)

    方法二:
    with open('r.txt','rb')
    d=pickle.load(f)
  • 相关阅读:
    @ResponseBody
    elselect vmodel初始化couponSelected.id 与 key="coupon.id" id数据类型要保持一致
    CentOS7安装k8s
    vuecli 搭建项目
    springboot+netty
    漏洞扫描器AWVS
    同一类控件批量初始化
    HQL manytoone 属性notfound, 引用外键记录不存在
    Netty 20211116 socket clientserver TCP/UDP
    安卓开发项目计划
  • 原文地址:https://www.cnblogs.com/Afrafre/p/10071756.html
Copyright © 2011-2022 走看看