【Python CLI】第四章 程序控制台

系列文章目录



前言

CLI 的控制台是 CLI 应用程序给出的反复获取用户输入来控制程序运行的一种交互方式。

CLI 应用程序控制台的主要工作模式和 python 的 REPL(交互式编程环境) 是一样的。分别是:

    read:读取用户输入的命令 eval:执行命令对应的动作 print:打印命令执行之后的结果 loop:重复上述过程,直到用户退出程序 所以,CLI console 的本质上就是一个循环。

一、实现思路

结合前言的内容,控制台就是一个循环,在循环之中,首先可以打印一些展示给用户的信息,然后提示用户输入命令,解析命令后程执行,再打印程序执行的结果,最简单的范式如下:

print("程序开始执行")
while True:
	command = input("prompt >")
	if command == "quit":
		break
	... # 解析其他命令和执行的其他代码	
	print(command)

除此之外,可能还需要添加一些命令行的功能,如命令补全,历史命令等。

二、相关库

1. 标准库 cmd

参考 。

cmd 库使用很方便,有以下几个步骤:

    自定义console 类,继承 cmd.Cmd。 在自定义类中重写 intro、prompt 属性分别是 console 的介绍和输入提示符。 定义命令,也就是在类中定义以 do_ 开头的方法,方法的文档就是命令的帮助信息。 实例化类,调用对象的 cmdloop() 开启控制台。

命令方法的返回值决定了console 是否退出,返回值为 True 或者 bool() 的结果为True,程序退出,否则不退出

import cmd
class Console(cmd.Cmd):
	intro = Welcome!   Type help or ? to list commands.

	prompt = prompt > 

	def do_echo(self, arg):
		回显输入的内容
		print(arg)
	
	def do_exit(self, arg):  # 即使没有参数
		退出控制台
		print("程序退出")
		return True  
		# 返回True, 退出Console
		

console = Console()
console.cmdloop()

Cmd 类还提供了其他的方法来对控制台做定义,常用的还有:

    Cmd.precmd(line) 在命令执行前对命令行做修改 Cmd.prompt 发出提示以请求输入。

其他更多的内容参考官方文档。

2. 其他三方库

官方文档:。 prompt_toolkit 是一个用于在Python中构建强大的交互式命令行和终端应用程序的库。 借助 prompt_toolkit 可以完成功能强大的控制台。


总结

以上就是这一章的主要内容,主要介绍了 CLI 应用程序 控制台 的实现思路和相关库。

经验分享 程序员 微信小程序 职场和发展