#!/usr/bin/env python3 # -*- coding: utf-8 -*- import re def update_profile_in_mockdata(): """更新mockData.js中的profileOverview数据""" # 读取mockData.js with open('src/data/mockData.js', 'r', encoding='utf-8') as f: content = f.read() # 读取生成的profile数据 with open('profile_overview_update.js', 'r', encoding='utf-8') as f: new_profile = f.read() # 移除第一行注释和mockData.前缀 new_profile = new_profile.replace('// 更新个人档案数据 - 葛荣景\nmockData.', '') # 找到第二个profileOverview的位置 pattern = r'(mockData\.profileOverview = \{[^}]*?// 学生基本信息.*?mockData\.profileOverview = )(\{[\s\S]*?\n\};)' # 查找第二个profileOverview并替换 matches = list(re.finditer(r'mockData\.profileOverview = \{', content)) if len(matches) >= 2: # 获取第二个匹配的起始位置 second_start = matches[1].start() # 找到对应的结束位置(查找配对的 };) bracket_count = 0 in_string = False escape_next = False end_pos = second_start + len('mockData.profileOverview = {') for i in range(end_pos, len(content)): char = content[i] if escape_next: escape_next = False continue if char == '\\': escape_next = True continue if char in ['"', "'", '`'] and not in_string: in_string = char elif char == in_string: in_string = False if not in_string: if char == '{': bracket_count += 1 elif char == '}': if bracket_count == 0: # 找到了配对的结束括号 if i + 1 < len(content) and content[i + 1] == ';': end_pos = i + 2 else: end_pos = i + 1 break bracket_count -= 1 # 执行替换 new_content = content[:second_start] + 'mockData.' + new_profile + content[end_pos:] # 保存更新后的文件 with open('src/data/mockData.js', 'w', encoding='utf-8') as f: f.write(new_content) print("✅ 成功更新了第二个 profileOverview 数据") print("📋 已更新为葛荣景的个人档案信息") else: print("❌ 未找到第二个 profileOverview 定义") if __name__ == "__main__": update_profile_in_mockdata()