pokeemmo/python_tools/test_follow.py
2025-05-05 16:37:20 +08:00

52 lines
1.7 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/python python3
import os
import openpyxl
import re
# 获取py文件所在文件夹绝对路径
pydir = os.path.dirname(os.path.realpath(__file__))
#获取excel相对py文件路径
excel_path = os.path.join(pydir, "src", "精灵跟随.xlsx")
# 获取C文件所在文件夹相对py文件路径
cdir = os.path.join(os.path.dirname(pydir), "src")
# 文件路径
c_file_path = os.path.join(cdir, "follower_helper.c")
# 读取 Excel 文件
wb = openpyxl.load_workbook(excel_path)
sheet = wb.active
# 提取 Excel 数据(第一列和第三列)
replacement_map = {}
for row in sheet.iter_rows(min_row=2, max_row=sheet.max_row, min_col=1, max_col=3):
variable_name = row[0].value # 第一列
replacement_text = row[2].value # 第三列
if variable_name and replacement_text:
# 将 \n 转义为 \\n确保在代码中保持原样
replacement_map[variable_name] = replacement_text.replace("\\", "\\\\").replace("\n", "\\n")
# 读取 C 文件内容
with open(c_file_path, "r", encoding="utf-8") as file:
c_code = file.read()
# 替换变量对应的字符串
for variable, new_text in replacement_map.items():
# 匹配变量对应的字符串定义
pattern = rf'static const u8 {variable}\[\] = _\(".*?"\);'
replacement = rf'static const u8 {variable}[] = _("{new_text}");'
c_code, num_replacements = re.subn(pattern, replacement, c_code, flags=re.DOTALL)
# 输出调试信息
if num_replacements == 0:
print(f"未匹配到变量: {variable}")
else:
print(f"替换成功: {variable} -> {new_text}")
# 保存修改后的 C 文件
with open(c_file_path, "w", encoding="utf-8") as file:
file.write(c_code)
print("替换完成!")