Python中的pickle模块简单介绍

使用eval可以把字符串转换成对象,它是一个功能强大的工具。比如:

>>> eval("1+1")                   # 将字符对象直接运算,得出运算结果
2
>>> eval("[1, 2, 3]")             # 将字符串对象转变成列表对象
[1, 2, 3]
>>> eval("{'a': 1, 'b': 2}\n")    # 将字符串对象转换成字典对象,并去除\n换行符
{'a': 1, 'b': 2}
>>>

但事实上,eval太强大,传给它的字符串的对象都会执行, 甚至会删除计算机上所有文件的表达式,只要权限够,它都会屁颠屁颠的去执行,比如说下面字符串对象:

>>> import os                             # 导入os模块
>>> eval("os.system('sudo rm -rf /*')")   # 删除计算机里面的所有文件   

如果想储存Python原生对象,但又无法信赖文件的数据来源,Python中的pickle模块是个理想的选择。pickle模块是能够让我们直接在文件中存储几乎任何Python对象的高级工具,也并不需要我们把字符串转换来转换去。是非常通用的数据格式化和解析工具。

  • 使用pickle.dump来存储数据

>>> import pickle
>>> D = {'A': 1, 'B': 2}
>>> F = open("data.pkl", "wb")     # 要存储到的具体文件名,打开类型为'wb'
>>> pickle.dump(D, F)              # 使用dump方法存储文件
>>> F.close()
  • 使用pickle.load来提取数据

>>> import pickle
>>> F = open("data.pkl", "rb")    # 打开数据文件,具体类型'rb'
>>> E = pickle.load(F)            # 使用load方法来导出数据
>>> E
{'A': 1, 'B': 2}
>>>

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值