删除变量的cmd
PyMUD讨论区
4
帖子
2
发布者
104
浏览
-
写了删除变量的cmd,@newstart 麻烦过过目,看看有没有问题
import traceback, re, asyncio from pymud import Command, IConfig class CmdDelVar(Command, IConfig): _help = """ 通过命令行删除废弃变量的命令: 正常指令 含义 delvar xxx: 删除变量名为'xxx'的变量 delvar : 删除所有变量 """ def __init__(self, session, *args, **kwargs): # delvar命令后,删除所有变量 pattern = r"^(\bdelvar\b)(?:\s+([a-zA-Z_][a-zA-Z0-9_]*))?$" kwargs.setdefault("id", "cmd_delvar") super().__init__(session, patterns = pattern, *args, **kwargs) def __unload__(self): super().__unload__() async def execute(self, cmd, *args, **kwargs): """ 执行delvar命令,删除所有变量或指定变量 """ try: m = re.match(self.patterns, cmd) if m: para = list() for i in range(1, 3): if m[i] != None: para.append(m[i]) if (len(para) == 2): self.session.delVariable(para[1]) self.session.info(f"变量 {para[1]} 已删除") else: var_list = list() for var in self.session.vars.keys(): var_list.append(var) for var in var_list: self.session.delVariable(var) self.session.info("所有变量已删除") except Exception as e: self.error(f"异步执行中遇到异常, {e}, 类型为 {type(e)}") self.error(f"异常追踪为: {traceback.format_exc()}") -
目的就是调试过程中,会写一些变量,但由于没规划好,有些变量名字不合理就换掉了,但由于断线后所有变量都会持久化保存在.mud中,下次连线会自动载入,这样这些没用的变量就会常驻,用这个命令把他们清除掉。
我觉得Command不是这样用的,这个cmd并不和mud游戏相关,但我利用它实现了这个想要的功能。删除代码在这
if (len(para) == 2): self.session.delVariable(para[1]) self.session.info(f"变量 {para[1]} 已删除") else: var_list = list() for var in self.session.vars.keys(): var_list.append(var) for var in var_list: self.session.delVariable(var) self.session.info("所有变量已删除")
