如何在cmd中实现clear.Cmd



我正在开发一个自定义命令行解释器,我想实现"clear"命令,就像bash shell中的命令一样。有办法做到这一点吗?

我尝试过,但我认为这根本不正确:

#!/usr/bin/python3
import cmd
import sys
import os

class HBNBCommand(cmd.Cmd):
"""Command line interpreter"""
def do_clear(self):
"""Clear command similar to clear from shell"""
os.system('clear')

if __name__ == '__main__':
HBNBCommand().cmdloop()

当我尝试它时,它会给我一个例外:

Traceback (most recent call last):
File "/home/leuel/PycharmProjects/AirBnB_clone/./console.py", line 22, in <module>
HBNBCommand().cmdloop()
File "/usr/lib/python3.10/cmd.py", line 138, in cmdloop
stop = self.onecmd(line)
File "/usr/lib/python3.10/cmd.py", line 217, in onecmd
return func(arg)
TypeError: HBNBCommand.do_clear() takes 1 positional argument but 2 were given

cmd继承以构建自定义shell时,方法至少需要一个参数。引用该资源;解释器使用循环从其输入中读取所有行,解析它们,然后将命令分派给适当的命令处理程序。输入行被解析为两部分。命令和行上的任何其他文本">

由于do_clear没有提供参数,因此命令无法处理任何其他输入,即使该输入不存在。

class HBNBCommand(cmd.Cmd):
"""Command line interpreter"""
def do_clear(self, arg):
"""Clear command similar to clear from shell"""
os.system('clear')

if __name__ == '__main__':
HBNBCommand().cmdloop()

您也可以参考Python文档中的Cmd示例:https://docs.python.org/3/library/cmd.html#cmd-示例

最新更新