跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 世界
  • 用户
  • 群组
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Cerulean)
  • 不使用皮肤
折叠
品牌标识

PyMUD官方论坛

  1. 主页
  2. 版块
  3. PyMUD讨论区
  4. 删除变量的cmd

删除变量的cmd

已定时 已固定 已锁定 已移动 PyMUD讨论区
5 帖子 3 发布者 169 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • T 离线
    T 离线
    terry
    写于 最后由 编辑
    #1

    写了删除变量的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()}")
    
    1 条回复 最后回复
    0
    • N 离线
      N 离线
      newstart
      写于 最后由 编辑
      #2

      没看懂,这是要做什么?首先,Command不是这么用的,其次,也没看到具体执行删除的操作呢?

      1 条回复 最后回复
      0
      • T 离线
        T 离线
        terry
        写于 最后由 terry 编辑
        #3

        目的就是调试过程中,会写一些变量,但由于没规划好,有些变量名字不合理就换掉了,但由于断线后所有变量都会持久化保存在.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("所有变量已删除")
        
        1 条回复 最后回复
        0
        • N 离线
          N 离线
          newstart
          写于 最后由 编辑
          #4

          前面电脑上看的时候,代码只到unload后面就没了,我都没看到execute部分🤣🤣🤣

          1 条回复 最后回复
          0
          • D 离线
            D 离线
            driver
            编写于 最后由 编辑
            #5

            为啥不直接把.mud删掉完事呢?

            1 条回复 最后回复
            0

            你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

            厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

            有了你的建议,这篇帖子会更精彩哦 💗

            注册 登录
            回复
            • 在新帖中回复
            登录后回复
            • 从旧到新
            • 从新到旧
            • 最多赞同


            • 登录

            • 没有帐号? 注册

            • 登录或注册以进行搜索。
            Powered by NodeBB Contributors
            • 第一个帖子
              最后一个帖子
            0
            • 版块
            • 最新
            • 标签
            • 热门
            • 世界
            • 用户
            • 群组