shep/shep/store/file.py

72 lines
1.4 KiB
Python

# standard imports
import os
class SimpleFileStore:
def __init__(self, path):
self.__path = path
os.makedirs(self.__path, exist_ok=True)
def add(self, k, contents=None):
fp = os.path.join(self.__path, k)
if contents == None:
contents = ''
f = open(fp, 'w')
f.write(contents)
f.close()
def remove(self, k):
fp = os.path.join(self.__path, k)
os.unlink(fp)
def get(self, k):
fp = os.path.join(self.__path, k)
f = open(fp, 'r')
r = f.read()
f.close()
return r
def list(self):
files = []
for p in os.listdir(self.__path):
fp = os.path.join(self.__path, p)
f = open(fp, 'r')
r = f.read()
f.close()
if len(r) == 0:
r = None
files.append((p, r,))
return files
def path(self, key=None):
if key == None:
return self.__path
return os.path.join(self.__path, key)
def replace(self, key, contents):
fp = os.path.join(self.__path, key)
os.stat(fp)
f = open(fp, 'w')
r = f.write(contents)
f.close()
class SimpleFileStoreFactory:
def __init__(self, path):
self.__path = path
def add(self, k):
k = str(k)
store_path = os.path.join(self.__path, k)
return SimpleFileStore(store_path)