ums.utils.functions
1import os 2 3from typing import List, Callable 4 5from ums.utils.const import SHARE_PATH 6 7def list_path(path:str) -> List[str]: 8 if os.path.isdir(path): 9 items = [] 10 for item in os.listdir(path): 11 full = os.path.join(path, item) 12 if os.path.isdir(full): 13 items.extend(list_path(full)) 14 elif os.path.isfile(full): 15 items.append(full) 16 return items 17 else: 18 return [] 19 20def list_shared(filter:Callable=lambda p,n,e: True) -> List[str]: 21 files = [] 22 for f in list_path(SHARE_PATH): 23 r = f[len(SHARE_PATH)+1:] 24 25 if r[0] == '.' or '/.' in r: 26 # hidden files 27 continue 28 29 if '/' in r and '.' in r: 30 path, name, ending = r[:r.rfind('/')], r[r.rfind('/')+1:r.rfind('.')], r[r.rfind('.')+1:] 31 elif '/' in r: 32 path, name, ending = r[:r.rfind('/')], r[r.rfind('/')+1:], "" 33 elif '.' in r: 34 path, name, ending = "", r[:r.rfind('.')], r[r.rfind('.')+1:] 35 else: 36 path, name, ending = "", r, "" 37 38 if filter(path, name, ending): 39 files.append(r) 40 return files 41 42def list_shared_data(): 43 return list_shared(lambda p,n,e: e != "json") 44 45def list_shared_schema(): 46 return list_shared(lambda p,n,e: e == "json")
def
list_path(path: str) -> List[str]: