python读写和pickle数据的序列化
模式 | r | r+ | w | w+ | a | a+ |
---|---|---|---|---|---|---|
读 | + | + | + | + | ||
写 | + | + | + | + | + | |
创建 | + | + | + | + | ||
覆盖 | + | + | ||||
指针在开始 | + | + | + | + | ||
指针在结尾 | + | + |
创建读写的对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | f = open ( "./test.txt" , 'r' )f.readlines()f.close #指的是关闭对象,释放系统的资源也可以使用with:with open ("./test.txt" ,'r') as f:f.readlines()readline:指读取一次读取一行readlines:一次读取所有行,并返回列表for line in f #也可以使用迭代print(line,end = '')>>> f = open('/tmp/foo.txt', 'rb+') >>> f.write(b '0123456789abcdef' ) 16 >>> f.seek( 5 ) # 移动到文件的第六个字节 5 >>> f.read( 1 ) b '5' >>> f.seek( - 3 , 2 ) # 移动到文件的倒数第三字节 13 >>> f.read( 1 ) b 'd' python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。两种方法:pickle.dump 为序列化,将python的数据类型 转换成“文件”中所需要的类型 一般是write之前使用 直接使用pickle.dump(data1, output)就将data1这个python对象转换成文件的格式写到output这个文件的对象中了pickle.load方法为反序列化,从文件中读取数据,转变成python中所需要的类型 一般是read之前使用 data1 = pickle.load(pkl_file) 就将文件对象的数据转换成python数据格式并用data1来指向它 #使用pickle模块将数据对象保存到文件 import pickle data1 = { 'a' : [ 1 , 2.0 , 3 , 4 + 6j ], 'b' : ( 'string' , u 'Unicode string' ), 'c' : None } selfref_list = [ 1 , 2 , 3 ] selfref_list.append(selfref_list) output = open ( 'data.pkl' , 'wb' ) # Pickle dictionary using protocol 0. pickle.dump(data1, output) # Pickle the list using the highest protocol available. pickle.dump(selfref_list, output, - 1 ) output.close() #使用pickle模块从文件中重构python对象 import pprint, pickle pkl_file = open ( 'data.pkl' , 'rb' ) data1 = pickle.load(pkl_file) pprint.pprint(data1) data2 = pickle.load(pkl_file) pprint.pprint(data2) pkl_file.close() |
f.write()
f.write(string) 将 string 写入到文件中, 然后返回写入的字符数。
必须写入字符串,如果不是字符串,需要先转成字符串再写入
f.tell()
f.tell() 返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数。
f.seek()
如果要改变文件当前的位置, 可以使用 f.seek(offset, from_what) 函数。
from_what 的值, 如果是 0 表示开头, 如果是 1 表示当前位置, 2 表示文件的结尾,例如:
- seek(x,0) : 从起始位置即文件首行首字符开始移动 x 个字符
- seek(x,1) : 表示从当前位置往后移动x个字符
- seek(-x,2):表示从文件的结尾往前移动x个字符
例如:
Pickle模块
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,携手博客园推出1Panel与Halo联合会员
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· MySQL下200GB大表备份,利用传输表空间解决停服发版表备份问题
· 记一次 .NET某固高运动卡测试 卡慢分析
· 微服务架构学习与思考:微服务拆分的原则
· 记一次 .NET某云HIS系统 CPU爆高分析
· 如果单表数据量大,只能考虑分库分表吗?
· 7 个最近很火的开源项目「GitHub 热点速览」
· DeepSeekV3:写代码很强了
· Visual Studio 2022 v17.13新版发布:强化稳定性和安全,助力 .NET 开发提
· MySQL下200GB大表备份,利用传输表空间解决停服发版表备份问题
· 让 AI 对接 MySQL 数据库实现快速问答对话