#******************************===持久化******************************==
#with語句
#with語句使用的技術是一種成為上下文管理協議的技術(contextmanagementprotocal)
#自動判斷檔案的 作用域, 自動關閉不在使用的開啟的檔案控制代碼
with open(r'test01.txt', '+') as f:
strline = f.readline() # 按行讀取內容
# 此結構保證能夠完整讀取檔案直到結束
while strline:
pass
strline = f.readline()
strline = line(f) # list能用開啟的檔案作為引數,把檔案內每一行內容作為乙個元素
#read是按字元讀取檔案內容
# 從當前位置讀取指定個數字元,如果沒有指定,從當前位置讀取到結尾
strchar = f.read(1)
# seek(offset, from)
# 移動檔案的讀取位置,也叫讀取指標
# from的取值範圍:
# 0: 從檔案頭開始偏移;1:從檔案當前位置開始偏移 2: 從檔案末尾開始偏移
# 移動的單位是位元組(byte),乙個漢字由若干個位元組構成
# 返回檔案只針對 當前位置
f.seek(6, 0)
pos = f.tell() #用來顯示檔案讀寫指標的當前位置
f.write("一行可以有換行符") #追加字串
f.writelines(["第一行","第二行"]) #寫入很多行,引數可以是list格式
#******************************===pickle函式******************************==
# 序列化(持久化,落地):把程式執行中的資訊儲存在磁碟上
import pickle
a = 1
with open(r'1.txt', 'wb') as f:
pickle.dump(a, f)
#反序列化: 序列號的逆過程
with open(r'1.txt', 'rb') as f:
age = pickle.load(f)
#******************************===shelve函式******************************==
#類似字典,用kv對儲存資料,訪問方式跟字典也類似
#shelve特性:
#不支援多個應用並行寫入,解決:open的時候可以唯讀開啟,使用flag=r
#寫回問題,解決: 強制寫回:writeback=true
import shelve
with shelve.open(r'2.db', writeback=true) as shv:
shv['one'] = 1
shv['two'] = 2
shv['three'] = 3
with shelve.open(r'2.db', flag='r') as shv:
print(shv['one'])
可持久化fhq treap學習筆記
目錄luogu扣圖 由於fhq treap是沒有旋轉操作的 所以每次操作後的其它沒有操作的節點間的關係不變 而有旋轉平衡樹是要改變的,所以就不大能進行可持久化了 回想,主席樹的方法 每次用log的記憶體記錄一次操作 這可持久平衡樹也一樣 每次merge或者split都新開節點記錄路徑 路徑是log級...
可持久化陣列學習筆記
推薦先閱讀 可持久化線段樹學習筆記 一 定義 可進行修改,並支援如下兩功能的陣列 1.在某個歷史版本上修改某乙個位置上的值 2.訪問某個歷史版本上的某一位置的值 二 原理 如果你已經學會了可持久化線段樹 我就當你會了,不會見題頭 會發現其實可持久化陣列已經 含在 樹中,或者說借 樹實現的 建樹與修改...
可持久化 可持久化資料結構學習筆記
我終於也要學可持久化了qwq 膜wjmzbmr 線 割 分 是 我 資料結構的可持久化,就是把乙個資料結構的歷史狀態全都儲存下來,從而能夠快速查詢之前出現過的某個操作的結果。當然這必然會帶來很大的時間和空間消耗,因此優越的可持久化都會充分利用資料結構歷史狀態裡的相似部分來減少時間和空間複雜度。顯然有...