第五课中处理持久化的方法还是有待商榷
第五课中我们利用nester模块中的print_lol函数对写入文本文件的列表进行了格式化,确保数据的可用性。
可如果我们需要写入其他的数据格式呢?难道要对每一种数据格式都创建一个格式化方法?
要累死程序猿吗?码农也是人啊!
Gudio还有有人情味儿的,python的标准库中有一个pickle模块可以解决这个问题!
使用pickle模块持久化数据
pickle模块可以保存各种数据类型的原始状态,我们不必再为数据写入文件前的格式化而担心了!
将第四课中的代码做如下修改:
'''使用pickle模块持久化各种数据类型的数据'''
import pickle
man = []
other = []
try:
data = open('sketch.txt')
try:
for each_line in data:
(role, line_spoken) = each_line.split(':', 1)
line_spoken = line_spoken.strip()
if role == 'man':
man.append(line_spoken)
else:
other.append(line_spoken)
except ValueError:
pass
data.close()
except IOError as ioerr:
print('File Error :' + str(ioerr))
try:
with open('man_data.txt', 'wb') as man_file, open('other_data.txt', 'wb') as other_file: #由于pickle以二进制模式存储数据,所以我们需要'wb'参数来以二进制方式操作文件
pickle.dump(man, file = man_file) #dump是pickle中的一个方法,用来写入数据
pickle.dump(other, file = other_file)
except IOError as ioerr:
print('File Error: ' + str(ioerr))
except pickle.PickleError as perr:
print('Pickling Error: ' + str(perr)) #pickle的异常
这样,我们使用pickle对处理完毕。接下来取出数据看看,是否如我们所愿。
import pickle
man_data = []
try:
with open('man_file.txt', 'rb') as fman: #用二进制方式打开文件
man_data = pickle.load(fman) #pickle中的load方法用于从文件对象中取出数据
except IOError as ioerr:
print('File Error: ' + str(ioerr))
except pickle.PickleError as perr:
print('Pickling Error: ' + str(perr))
print(man_data)
接下来我们可以看到输出到控制台的列表了!
OK~!干完,手工!
分享到:
相关推荐
内置模块 pickle 可以将 python 文件对象转换为 python 专用格式存储到硬盘以便于持久保存。 模块 pickle 可以处理: 所有python支持的原生类型:布尔值,整数,浮点数,复数,字符串,字节,None 。 由任何原生类型...
内置模块 shelve 可以将任意 Python 对象(pickle 模块能够处理的任何东西。)以类似字典的对象(shelf 对象)存在磁盘上以实现数据的持久保存。模块 shelve 生成的类似字典的对象 shelf 包含键 key 和 值 value 。...
pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。 pickle模块只能在python中使用,python中几乎所有的数据类型(列表,字典,集合,类等)都可以用pickle来序列化, pickle序列化后的...
原创python密码程序 知识领域: turtle模块-输入框 pickle模块-保存数据至txt文本文档 密码程序 可从Set_password.py更改密码 从Password.py运行 如有雷同纯属巧合
主要介绍了Python中的数据对象持久化存储模块pickle的使用示例,重点讲解了pickle中模块中对象持久化和文件读取的相关方法,需要的朋友可以参考下
python库。 资源全名:pickle-mixin-1.0.2.tar.gz
在Python中,pickle模块可让您序列化和反序列化数据。 从本质上讲,这意味着您可以将Python对象转换为字节流,然后稍后在其他进程或环境中通过加载该字节流来重建它(包括对象的内部结构)(有关更多信息,请参见:...
The-windows-pickle-login-tkinter-python-project Python的标准TK GUI工具包的接口Tkinter模块(“TK界面”)是Python的标准TK GUI工具包的接口。 TK和Tkinter可以用于大多数UNIX平台,也可以应用于windows和麦金塔...
pickle模块是Python专用的持久化模块,可以持久化包括自定义类在内的各种数据,比较适合Python本身复杂数据的存贮。但是持久化后的字串是不可认读的,并且只能用于Python环境,不能用作与其它语言进行数据交换。在...
6-4第三方模块的安装 7-1类与面向对象设计OOP 7-2多态、继承和封装 7-3类装饰器 8-1异常和警告 8-2try-except语句和结构 8-3排查错误方法 8-4编码方式介绍 9-1文件内建方法:打开和读写 9-2文件的存储模块:pickle和...
第四周-第16章节-Python3.5-Json与pickle数据序列化.avi
所有的这些模块提供了一个对象实现了基于字符串的持久化的字典,他与字典dict非常相似,但是他的keys和values都必须是字符串。 * shelve:shelve模块使用特殊的“shelf”对象来支持持久化对象。这个对象的行为与dict...
pickle(python3.x)和cPickle(python2.x的模块)相当于java的序列化和反序列化操作。 常采用下面的方式使用: import pickle pickle.dump(obj,f) pickle.dumps(obj,f) pickle.load(f) pickle.loads(f) 使用pickle模块...
主要介绍了python持久性管理pickle模块详细介绍,本文讲解了什么是持久性、一些经过 pickle 的 Python等内容,并讲给出了18个使用示例,需要的朋友可以参考下
这篇文章主要介绍了Python pickle模块实现对象序列化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 作用 对Python对象进行序列化,便于存储和传输 Python...
pickle提供了一个简单的持久化功能。可以将对象以文件的形式存放在磁盘上。 pickle.dump(obj, file[, protocol]) 序列化对象,并将结果数据流写入到文件对象中。参数protocol是序列化模式,默认值为0,表示以文本的...
用于序列化的两个模块 json:用于字符串和Python数据类型间进行转换 pickle: 用于python特有的类型和python的数据类型间进行转换 json提供四个功能:dumps,dump,loads,load pickle提供四个功能:dumps,dump,...
主要介绍了Python使用pickle模块实现序列化功能,结合实例形式分析了基于pickle模块的序列化操作相关操作技巧,需要的朋友可以参考下