python windows环境自己的程序实现命令行补全/使用pyreadline实现(目前已知唯一方法,对python版本有要求)
1.环境
- 前提注意事项
- python3版本最好是3.10以下(理论上),最新版可能会有问题,本文使用python3.7.2版本
- 本文环境是用pipenv加pyenv虚拟环境实现的,想了解的去我的主页搜素相关博文
安装pyreadline(全平台通用win/linux)
pip install pyreadline
版本问题报错请参考:https://blog.csdn.net/qq_43267113/article/details/132913899
上代码
import readline
import sys
# 自定义自动补全函数
def complete(text, state):
commands = ["start", "stop", "restart", "status"] # 定义一组可能的命令
options = [i for i in commands if i.startswith(text)] # 根据用户输入的text进行匹配
if text=="start":
commands = ["group", "inter", "gap", "log"] # 定义一组可能的命令
options = [i for i in commands if i.startswith(text)] # 根据用户输入的text进行匹配
if state < len(options):
return options[state]
else:
return None
# 启用自动补全功能
readline.parse_and_bind("tab: complete") ##tab补全,替换tab原有功能
# 设置自动补全函数
readline.set_completer(complete)
while True:
# 从命令行获取用户输入
user_input = input("Enter a command: ")
if user_input=="q":
sys.exit(0)
elif user_input=="exit":
sys.exit(0)
else:
continue