python 文件(2)

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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章