cmd
库是Python的一个命令行接口库,它允许你轻松地创建交互式命令行应用程序
- 使用
cmd.Cmd
类创建一个子类,该子类继承自cmd.Cmd
。
import cmd class MyCLI(cmd.Cmd): prompt = "mycli> "
- 在子类中定义命令处理函数。这些函数将在用户输入命令时被调用。函数名应以
do_
开头,后跟命令的名称。
class MyCLI(cmd.Cmd): prompt = "mycli> " def do_hello(self, arg): """Say hello to the user.""" print("Hello, {}!".format(arg)) def do_quit(self, arg): """Quit the application.""" print("Goodbye!") return True
- 实现
do_exit
方法以退出应用程序。这个方法在用户输入exit
或quit
时被调用。
class MyCLI(cmd.Cmd): prompt = "mycli> " def do_hello(self, arg): """Say hello to the user.""" print("Hello, {}!".format(arg)) def do_quit(self, arg): """Quit the application.""" print("Goodbye!") return True def do_exit(self, arg): """Exit the application.""" print("Goodbye!") return True
- 创建一个
cmd.Cmd
实例并运行它。
if __name__ == "__main__": cli = MyCLI() cli.cmdloop()
现在,你已经创建了一个简单的命令行应用程序,可以使用do_hello
和do_quit
命令。你可以根据需要添加更多命令处理函数。
如果你需要在命令之间保存和加载状态,可以使用实例变量。例如,你可以在do_hello
方法中将用户的名字保存在实例变量中,然后在其他命令中使用它。
class MyCLI(cmd.Cmd): prompt = "mycli> " def __init__(self): super().__init__() self.name = None def do_hello(self, arg): """Say hello to the user.""" self.name = arg print("Hello, {}!".format(self.name)) def do_greet(self, arg): """Greet the user by name.""" if self.name: print("Hello, {}!".format(self.name)) else: print("Hello, guest!") def do_quit(self, arg): """Quit the application.""" print("Goodbye!") return True def do_exit(self, arg): """Exit the application.""" print("Goodbye!") return True
在这个例子中,我们在do_hello
方法中将用户的名字保存在self.name
实例变量中,然后在do_greet
方法中使用它。当用户输入hello
命令时,他们将看到一条个性化的问候消息。