77 lines
2.6 KiB
Python
77 lines
2.6 KiB
Python
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) |