tell函数:用来显示当前文件读取指针的位置
#tell的返回数字单位是byte
#read是以字符为单位
text.txt文件内容如下:
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒催肠三杯醉,寻香惊梦五更寒。
钗头凤斜雂有泪,荼蘼化了我无缘。
小楼寂寞心宇月,也难如勾也难圆。
with open(r'text.txt', 'r',encoding='UTF-8') as f:
strchar = f.read(2)
pos = f.tell()
while strchar:
print(pos)
print(strchar)
strchar = f.read(2)
pos = f.tell()
6
伤情
12
最是
18
晚凉
24
天,
30
憔悴
36
斯人
42
不堪
48
怜。
53
邀
59
酒催
65
肠三
71
杯醉
77
,寻
83
香惊
89
梦五
95
更寒
100
。
106
钗头
112
凤斜
118
雂有
124
泪,
130
荼蘼
136
化了
142
我无
148
缘。
153
小
159
楼寂
165
寞心
171
宇月
177
,也
183
难如
189
勾也
195
难圆
198
。
文件的写操作
-write(str):把字符串写入文件
-writelines(str):把字符串按行写入文件,参数可以是list格式
-区别:
write函数参数只能是字符串
writelines参数可以是字符串,也可以是字符序列
#weite案例
#向text文件中追加诗句
with open(r'text.txt', 'a',encoding='UTF-8') as f:
f.write('\n')
f.write('百万大军困襄阳,外无救兵内无良。\n有朝一日城破了,哭爹的哭爹,喊娘的喊娘。')
伤情最是晚凉天,憔悴斯人不堪怜。
邀酒催肠三杯醉,寻香惊梦五更寒。
钗头凤斜雂有泪,荼蘼化了我无缘。
小楼寂寞心宇月,也难如勾也难圆。
百万大军困襄阳,外无救兵内无良。
有朝一日城破了,哭爹的哭爹,喊娘的喊娘。
持久化-pickle
-可以保存一些结构化的东西
-序列化:把程序运行中的信息保存在磁盘上
-反序列化:序列化的你过程
-pickle.dump:序列化模块
-pickle.load:反序列化
import pickle
with open(r'text.txt', 'wb') as f:
age=19
pickle.dump(age,f)
with open(r'text.txt','rb') as f:
age2=pickle.load(f)
print(age2)
19
持久化-shelve
-类似字典,用kv对数据保存,存取方式也跟字典类似
import shelve
shv=shelve.open(r'shv.bd')
shv['one']=100
shv['two']=80
shv['three']=60
shv.close()
shv=shelve.open(r'shv.bd')
try:
print(shv['one'])
print(shv['two'])
except Exception as e:
print('None')
finally:
shv.close()
100
80
shelve补充:
不支持多个应用并行写入:open的时候可以使用flag=r
写回问题:强制写回writeback=True
#shelve使用with管理上下文环境
with shelve.open(r"shv.db",writeback=True) as shv:
k=shv['one']
print(k)