import json import os HOUSE_FILE = "./data/houses.json" def init_db(): """初始化房源数据文件""" os.makedirs("./data", exist_ok=True) if not os.path.exists(HOUSE_FILE): with open(HOUSE_FILE, 'w', encoding='utf-8') as f: json.dump([], f, ensure_ascii=False, indent=4) def read_houses(): """读取所有房源""" init_db() with open(HOUSE_FILE, 'r', encoding='utf-8') as f: return json.load(f) def write_houses(houses): """写入房源""" with open(HOUSE_FILE, 'w', encoding='utf-8') as f: json.dump(houses, f, ensure_ascii=False, indent=4) STACK_FILE = "./data/stack_data.json" def init_stack_db(): """初始化栈文件""" os.makedirs("./data", exist_ok=True) if not os.path.exists(STACK_FILE): init_data = {"operation_stack": [], "browse_stack": []} with open(STACK_FILE, 'w', encoding='utf-8') as f: json.dump(init_data, f, ensure_ascii=False, indent=4) def read_stack(stack_type): """读取指定栈""" init_stack_db() with open(STACK_FILE, 'r', encoding='utf-8') as f: data = json.load(f) return data.get(f"{stack_type}_stack", []) def write_stack(stack_type, new_stack): """写入指定栈""" init_stack_db() with open(STACK_FILE, 'r', encoding='utf-8') as f: data = json.load(f) data[f"{stack_type}_stack"] = new_stack with open(STACK_FILE, 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=4) # V3.0 字符串+数组:邻接矩阵数据读写 MATRIX_FILE = "./data/matrix.json" def init_matrix_db(): """ 新增:初始化小区邻接矩阵文件 存储所有小区名称列表 和 二维距离数组(邻接矩阵) """ os.makedirs("./data", exist_ok=True) if not os.path.exists(MATRIX_FILE): init_data = { "community_list": [], # 小区名称列表(一维数组) "distance_matrix": [] # 小区距离二维数组(邻接矩阵) } with open(MATRIX_FILE, 'w', encoding='utf-8') as f: json.dump(init_data, f, ensure_ascii=False, indent=4) def read_matrix_data(): """V3.0新增读取小区列表和距离邻接矩阵""" init_matrix_db() with open(MATRIX_FILE, 'r', encoding='utf-8') as f: return json.load(f) def write_matrix_data(matrix_dict): """V3.0新增保存小区列表和距离邻接矩阵""" init_matrix_db() with open(MATRIX_FILE, 'w', encoding='utf-8') as f: json.dump(matrix_dict, f, ensure_ascii=False, indent=4)