一起使用pickle
和dbm
。此代碼適用於python2和python3(在Raspbian linux上測試)
import pickle
import dbm
OBJECTS = (
'string1',
'string2',
)
def store():
db = dbm.open('test','c')
index = 0
for ob in OBJECTS:
db[str(index)] = pickle.dumps(ob)
index += 1
db['N'] = str(index) # store object count
db.close()
def load():
db = dbm.open('test','r')
nb = int(db['N'])
while nb>0:
nb -= 1
ob = pickle.loads(db[str(nb)])
print (ob)
db.close()
store()
load()
鍵'N'表示存儲了多少個對象。這應該適用於大量的對象。
編輯
這並不侷限於字符串,它也將與任何對象pickle
可序列化工作。例如,你可以寫
OBJECTS = (
('A', 'b', '123'),
'SomeString',
{1: 'ABC', 2:((1,2),(3,4)), 3: [9,8,7,6]},
[[],[1],[2,3],[4,5,6]],
)
Thanks @ sci-prog!這不太符合我的需求,因爲我將存儲數組而不是字符串(我知道,我應該讓我的初始問題更加明確,我的玩具示例更少玩具),但是您對dbm的建議讓我指出了正確的方向。我認爲我最終會使用python的shelve或sqlite3。 – itf
這適用於列表(實際上,任何'pickle'可以序列化的對象)。看我的編輯。但是使用其他「數據持久性」模塊的解決方案也應該可行。 –