77 lines
2.7 KiB
Python
77 lines
2.7 KiB
Python
|
|
#!/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()
|