第27天-文件打开2-shelve ,pickle模块,tell函数

‘’’
tell 函数
tell 返回是字节
read 是以字符
‘’’
‘’’

with open(r'text01.txt','r') as f:
    str=f.read(3)
    pos=f.tell()
    while str:
        print(str)
        print(pos)
        str=f.read(3)
        pos=f.tell()

‘’’
‘’’
文件的写操作-write
write(str):只能算是字符串
write(line):把字符串按行写入(可以有其他)
它里面没有换行
‘’’
#1.追加一行诗句,用a

with open(r'text01.txt','a',) as f:
    f.writelines("生活不仅眼前的苟且")
    f.writelines("还有远方的枸杞")

with open(r'text01.txt','w',) as f:
    f.writelines("生活不仅眼前的苟且")
    f.writelines("还有远方的枸杞")

‘’’
持续化-pickle
序列化(持久化,落地):把程序运行中的信息保存在磁盘上
pickle:python提供的序列化模块
pickle.dump 序列化
pick.load 反序列化
可以存序列
‘’’

import pickle
age=19
with open(r'text01.txt','wb')as f:
    #写进去
    pickle.dump(age,f)
    #读出来
with open(r'text01.txt','rb')as f:
    age=pickle.load(f)
    print(age)
a=[19,'yangyang','i like playing game',[175,130]]
with open(r'text01.txt','wb')as f:
    #写进去
    pickle.dump(a,f)
    #读出来
with open(r'text01.txt','rb')as f:
    age=pickle.load(f)
    print(age)

‘’’
shelve
持久化工具,类似于字典
open ,close
‘’’
import shelve
#shv类似于一个字典

shv=shelve.open(r'shv.db')
shv['one']=1
shv['two']=2
shv.close()

#通过以上案例,shelve自动创建的不仅仅是一个shv.db文件
#还包括其他文件

#shelve读取

shv=shelve.open(r'shv.db')
print(shv['one'])
shv['one']={'qq':1,'qw':2,'qe':3}
print(shv['two'])
print(shv['one'])
shv.close()

‘’’
shelve
不支持多个应用并行写入
为解决这个问题open的时候使用flag=r
写回问题
解决办法:强制写回:writeback=True
‘’’

shv=shelve.open(r'shv.db')
k1=shv['one']
k1['qq']=100
print(k1)
shv.close()

'''
shelve 使用with管理
'''
with shelve.open(r'shv.db')as shv:
   print("这是\n",shv['one'])
发布了27 篇原创文章 · 获赞 0 · 访问量 300
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 1024 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览