python文件IO之pickle 模块读写对象数据

可以向一个文件中写入字符串,读取后也是读取字符串形式,但是不能直接向文件中写入像列表这样的对象,需要 pickle 等模块才行。

pickle 模块介绍

  • pickle 模块使用强大且有效的算法来进行序列化和反序列化。
  • 序列化是指将一个对象转换为能够存储在一个文件中或者在网络上进行传输的字节流的过程(序列化 = 卸载对象)

  • 反序列化指的是相反的过程,它是从字节流中提取出对象的过程(反序列化 = 加载对象)

注意

  • 通常以 dat或者bin为文件后缀名来保存二进制数据等,不过用其它的后缀名也可,毕竟后缀名只单单是一个后缀名。
  • 调用 pickle 模块中的 load 和 dump 函数来读写数据。
  • 调用一次dump就是写入一个数据,调用一次load就是读取一个数据。
  • 可以使用 load 函数重复读取直到函数抛出一个 EOFError 异常(文件末尾异常)。当抛出这个异常时,捕获并处理它以结束文件读取过程。

示例代码

import pickle


def main():
    outfile = open("data2.txt", "wb")
    pickle.dump(45, outfile)   # 写入一个对象
    pickle.dump(56.6, outfile)   # 写入一个对象
    pickle.dump("编程很有趣", outfile)   # 写入一个对象
    pickle.dump([1, 2, 3, 4], outfile)   # 写入一个对象
    outfile.close()

    infile = open("data2.txt", "rb")
    while True:
        try:
            data = pickle.load(infile)
            print(type(data), ": ", data)
        except EOFError:
            print("已经读取完毕")
            break
    infile.close()


main()

运行结果

<class 'int'> :  45
<class 'float'> :  56.6
<class 'str'> :  编程很有趣
<class 'list'> :  [1, 2, 3, 4]
已经读取完毕

end

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装_pickle模块不需要单独操作,因为_picklePython的内置模块。_pickle模块用于序列化对象,即将对象转换成字节流以便存储或传输。在Python中使用_pickle模块可以方便地将对象持久化保存到磁盘上,并在需要时将其读取出来恢复成原来的对象。 在使用Python 3时,默认已经自带_pickle模块,无需进行额外的下载和安装。可以直接在代码中通过`import pickle`来导入_pickle模块,然后使用_pickle模块的相关函数进行对象的序列化和反序列化操作。 常用的_pickle模块函数包括: - dumps(obj):将对象序列化为字节流 - loads(data):将字节流反序列化为对象 - dump(obj, file):将对象序列化并保存到文件中 - load(file):从文件中读取字节流并将其反序列化为对象 在导入_pickle模块后,就可以使用上述函数进行对象的序列化和反序列化操作了。例如,可以使用dumps函数将对象转换成字节流并打印出来,然后使用loads函数将字节流转换回对象。 需要注意的是,使用_pickle模块进行对象的序列化和反序列化时,可能会存在一些安全风险,因为_pickle模块可以执行任意的Python代码。如果需要在不可信的环境下进行对象序列化和反序列化操作,建议使用更安全的序列化模块,如JSON模块。 总之,Python 3已经内置了_pickle模块,可以直接导入并使用相关函数进行对象的序列化和反序列化操作,无需额外的下载和安装。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值