• 技术文章 >Python技术 >Python基础教程

    一文带你读懂Python中的pickle模块

    爱喝马黛茶的安东尼爱喝马黛茶的安东尼2019-07-06 18:02:18原创2800

    pickle模块:

    属于python专有的模块,用法,功能与json类似。

    常用方法:

    dump(obj,fp):将对象以字符串的形式写入文件中。

    load(fp):将数据从文件中读出,并返回(需要变量接收)。

    dumps(obj):将对象转换成json字符串形式。

    loads(str):将json字符串数据转换成原来的数据类型。

    dump(obj,fp) | load(fp) 示例如下;

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    import pickle

    # 将数据以json方式写入文件

    dict_1 = {"电影":"黄飞鸿","电视剧":"霍元甲"}

    file_write = open("pickle.txt",mode="wb")

    pickle.dump(dict_1,file_write)  # 将字典以字节的形式写入文件

    file_write.close()

    # 从文件中以json方式读取数据

    file_read = open("pickle.txt",mode="rb")

    dict_2 = pickle.load(file_read)  # 将文件中内容转换成原数据类型并返回

    file_read.close()

    print(dict_2.items(),type(dict_2)) # 打印转换后的数据

    打印内容如下

    1

    dict_items([('电影', '黄飞鸿'), ('电视剧', '霍元甲')]) <class 'dict'>

    相关推荐:《Python视频教程

    dumps(obj) | loads(obj) 示例如下;

    1

    2

    3

    4

    5

    6

    7

    import pickle

    dict_1 = {"电影":"黄飞鸿"}

    pickle_byte = pickle.dumps(dict_1)  # 将字典转换成pickle字节

    print(pickle_byte)

    # 将pickle字节转换成原数据

    dict_2 = pickle.loads(pickle_byte)

    print(dict_2.items(),type(dict_2)) # 打印转换后的数据

    打印内容如下

    1

    2

    3

    b'\x80\x03}q\x00X\x06\x00\x00\x00\xe7\x94\xb5\xe5\xbd\xb1q\x01X\t\x00\x00\x00\xe9\xbb\x84\xe9\xa3\x9e\xe9\xb8\xbfq

    \x02s.'

    dict_items([('电影', '黄飞鸿')]) <class 'dict'>

    与json不同的是pickle可以多次dump多次load,如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    import pickle

    dict_1 = {"电影":"黄飞鸿"}

    dict_3 = {"电视剧":"霍元甲"}

    dict_5 = {"动画片":"葫芦娃"}

    file_write = open("pickle.txt",mode="wb")

    pickle.dump(dict_1,file_write)  # 将dict_1以字节的形式写入文件

    pickle.dump(dict_3,file_write)  # 将dict_3以字节的形式写入文件

    pickle.dump(dict_5,file_write)  # 将dict_5以字节的形式写入文件

    file_write.close()

    file_read = open("pickle.txt",mode="rb")

    dict_2 = pickle.load(file_read)  # 将文件中内容转换成原数据类型并返回

    dict_4 = pickle.load(file_read)  # 将文件中内容转换成原数据类型并返回

    dict_6 = pickle.load(file_read)  # 将文件中内容转换成原数据类型并返回

    file_read.close()

    print(dict_2.items(),type(dict_2)) # 打印转换后的数据

    print(dict_4.items(),type(dict_4)) # 打印转换后的数据

    print(dict_6.items(),type(dict_4)) # 打印转换后的数据

    打印内容如下

    1

    2

    3

    dict_items([('电影', '黄飞鸿')]) <class 'dict'>

    dict_items([('电视剧', '霍元甲')]) <class 'dict'>

    dict_items([('动画片', '葫芦娃')]) <class 'dict'>

    小结:

    1、json属于通用的模块,Java,JS等其它语言也支持。

    pickle是Python私有的,只支持Python。

    2、json将对象转换成json字符串类型。

    pickle将对象转换成pickle字节类型。

    3、json只能转换dict,list,tuple,str,int,float,bool值等简单数据类型

    pickle能转换除了lamda以外的所有已知数据类型。

    4、json虽然可以多次dump但是load会报错(这是伤)。

    pickle可以多次dump,多次load。

    相关推荐:

    一文带你读懂JSON模块

    专题推荐:python pickle
    上一篇:一文带你读懂JSON模块 下一篇:Python静态方法和类方法的区别和应用

    相关文章推荐

    • Python之json模块和pickle模块详解• 一文带你读懂Python线程

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网