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)