# -*- coding: utf-8 -*- r'''管理页路径改名:zhingzhuanzhan -> zhongzhuanzhan 我上次拼错了(多打了个 i),用户纠正。 涉及:relay.py 里的常量/路由/页面链接 + 所有测试。 ''' from __future__ import annotations import ast import sys from pathlib import Path ROOT = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote") OLD = "zhingzhuanzhan" NEW = "zhongzhuanzhan" # 要扫的目录 TARGETS = ("relay", "_tests", "installer", "docs", "_build", "android", "windows") EXTRA = ["README.md"] def main() -> int: changed = [] paths = [] for top in TARGETS: base = ROOT / top if base.is_dir(): paths.extend(base.rglob("*.py")) paths.extend(base.rglob("*.ps1")) paths.extend(base.rglob("*.sh")) paths.extend(base.rglob("*.txt")) paths.extend(base.rglob("*.md")) paths.extend(base.rglob("*.java")) paths.extend(base.rglob("*.iss")) for name in EXTRA: p = ROOT / name if p.is_file(): paths.append(p) for path in paths: if any(x in str(path) for x in (".git", "dist_exe", "pyinstaller", "_build\\jc", "out_java", "build\\")): continue try: raw = path.read_bytes() except OSError: continue had_bom = raw.startswith(b"\xef\xbb\xbf") try: text = raw.decode("utf-8-sig") except UnicodeDecodeError: continue if OLD not in text: continue n = text.count(OLD) text = text.replace(OLD, NEW) path.write_bytes((b"\xef\xbb\xbf" if had_bom else b"") + text.replace("\r\n", "\n").encode("utf-8")) changed.append(f"{path.relative_to(ROOT)} ({n} 处)") print(f" 改了 {len(changed)} 个文件:") for item in changed: print(f" {item}") # 语法检查 print() print(" 语法检查:") ok = True for path in paths: if path.suffix != ".py": continue try: ast.parse(path.read_text(encoding="utf-8-sig", errors="replace")) except SyntaxError as exc: print(f" [失败] {path.relative_to(ROOT)}: 行 {exc.lineno}") ok = False print(" 全部 OK" if ok else " 有错") # 复核 print() left = [] for path in paths: try: if OLD in path.read_text(encoding="utf-8-sig", errors="replace"): left.append(str(path.relative_to(ROOT))) except OSError: pass print(f" 还残留 {OLD} 的文件: {left if left else '无 ✓'}") return 0 if ok else 1 if __name__ == "__main__": sys.exit(main())