為了節省計算時間,很多時候資料都會直接被儲存在磁碟上。在python中,需要使用python模組pickle序列化物件,序列化物件可以在磁碟上儲存物件,並在需要的時候讀取出來。例如,使用pickle模組儲存決策樹:
import pickle
#建立資料集
defcreatedataset
(): dataset = [[1, 1, 'yes'],
[1, 1, 'yes'],
[1, 0, 'no'],
[0, 1, 'no'],
[0, 1, 'no']]
labels = ['no su***cing', 'flippers']
return dataset, labels
#儲存def
storetree
(inputtree, filename):
import pickle
fw = open(filename, 'wb') #以二進位制讀寫方式開啟檔案
pickle.dump(inputtree, fw) #pickle.dump(物件, 檔案,[使用協議])。序列化物件
# 將要持久化的資料「物件」,儲存到「檔案」中,使用有3種,索引0為ascii,1是舊式2進製,2是新式2進製協議,不同之處在於後者更高效一些。
#預設的話dump方法使用0做協議
fw.close() #關閉檔案
#讀取def
grabtree
(filename):
import pickle
fr = open(filename, 'rb')
return pickle.load(fr) #讀取檔案,反序列化
mydat, labels = createdataset()
mytree = treeplotter.retrievetree(0)
storetree(mytree, 'classifierstorage.txt')
#生成的txt檔案儲存在當前的檔案目錄下
print(grabtree('classifierstorage.txt'))
note :在python2中可以使用:
fw = open(filename, 'w')
fr = open(filename)
若在python3中使用,則會出現報錯:
typeerror: write() argument must be str, not
bytes
此時,需要使用』wb』二進位制形式讀取檔案。若出現報錯:
unicodedecodeerror: 'utf-8' codec can't decode byte 0x80
in position 0: invalid start byte
則是沒有使用』rb』二進位制形式開啟檔案。 磁碟儲存1
磁碟儲存 磁碟是廣為應用的儲存大量資料的儲存裝置,儲存資料的數量級可以達到幾百到幾千千兆位元組,而基於ram的儲存器只能有幾百或幾千兆位元組。不過,從磁碟上讀資訊的時間位毫秒級,比從dram讀慢了10萬倍,比從sram讀慢了100萬倍。1.磁碟構造 磁碟是由碟片構成的。每個碟片有兩面或者稱為表面,表...
磁碟儲存原理
磁碟是廣泛應用的資料儲存裝置,儲存容量比較大,相比ram等儲存裝置 低,讀寫速度慢,從磁碟讀資訊的時間是毫秒級,是dram的十萬倍,sram的一百萬倍,後面會對磁碟讀取資料耗時計算進行詳細的介紹。磁碟由多個碟片 platter 構成,每個碟片都有兩面。碟片表面覆蓋著磁性材料用於記錄資訊,碟片 有乙個...
資料是如何儲存在磁碟的
我們腦子裡理解資料的儲存就是 乙個庫裡面有一些表,表裡面有很多字段,然後有很多行資料 但其實這只是我們的邏輯概念,資料在磁碟物理儲存方式可不是這樣的。mysql在伺服器上是以乙個資料夾的形式出現的,你建立了test資料庫,那麼在磁碟上就會出現test的目錄,而建立的那些表,其實都是有乙個表空間的概念...