python windows环境自己的程序实现命令行补全/使用pyreadline实现(目前已知唯一方法,对python版本有要求)

发布时间 2023-11-16 19:28:48作者: 学不会xuebuhui

1.环境

  • 前提注意事项
  • python3版本最好是3.10以下(理论上),最新版可能会有问题,本文使用python3.7.2版本
    image
  • 本文环境是用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

效果windows下:

image