53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
|
import pickle
|
||
|
import os
|
||
|
def get(name, num):
|
||
|
if not num < count (name):
|
||
|
raise IndexError
|
||
|
storagename="data/%s-%i.pickle"%(name,num/50)
|
||
|
f=open(storagename, "rb")
|
||
|
data=pickle.load(f)
|
||
|
f.close()
|
||
|
if not isinstance(data, list):
|
||
|
raise ValueError
|
||
|
return data[num%50]
|
||
|
|
||
|
def put(name, num, val):
|
||
|
if not num < count (name):
|
||
|
raise IndexError
|
||
|
storagename="data/%s-%i.pickle"%(name,num/50)
|
||
|
f=open(storagename, "rb")
|
||
|
data=pickle.load(f)
|
||
|
f.close()
|
||
|
if not isinstance(data, list):
|
||
|
raise ValueError
|
||
|
data[num%50]=val
|
||
|
f=open(storagename, "wb")
|
||
|
pickle.dump(data,f,-1)
|
||
|
f.close()
|
||
|
def append(name, val):
|
||
|
num=count(name)
|
||
|
storagename="data/%s-%i.pickle"%(name,num/50)
|
||
|
data=[]
|
||
|
try:
|
||
|
f=open(storagename, "rb")
|
||
|
data=pickle.load(f)
|
||
|
f.close()
|
||
|
except:
|
||
|
pass
|
||
|
data.append(val)
|
||
|
f=open(storagename, "wb")
|
||
|
pickle.dump(data,f,-1)
|
||
|
f.close()
|
||
|
def count(name):
|
||
|
path = "data/"
|
||
|
files = [i for i in os.listdir(path) if os.path.isfile(os.path.join(path,i))
|
||
|
and name in i]
|
||
|
storagename="data/%s-%i.pickle"%(name,len(files)-1)
|
||
|
count=(len(files)-1)*50
|
||
|
if len(files) == 0:
|
||
|
return 0
|
||
|
f=open(storagename, "rb")
|
||
|
count = count + len(pickle.load(f))
|
||
|
f.close()
|
||
|
return count
|