如何在Python中创建自定义命令提示符

问题描述 投票:0回答:3

我们有一个 CLI 工具,它使用 python 中的 Typer 模块。

但是,我想创建一个自定义命令提示符 - 例如 mysql 提示符。

mysql>

目前,命令的调用方式如下:

C:\Users\ABC> python wowcli.py command1 paramA paramB
C:\Users\ABC> python wowcli.py command2 paramC paramD

我正在努力实现类似的目标:

C:\Users\ABC> python wowcli.py
wowcli> command1 paramA paramB
wowcli> command2 paramC paramD

有没有我们可以安装的Python库?请推荐。

python command-line-interface
3个回答
1
投票

您正在寻找构建自定义 REPL,请阅读评估打印循环。

您的问题非常广泛,但您可以从这里开始https://dev.to/amal/building-the-python-repl-3468


0
投票

我不太确定你的意思。看看

input
。您可以使用
str.split
“解析”这些参数。


0
投票

我制作了一个脚本,可以动态地将命令添加到应用程序,为其绑定一个函数并将命令的所有参数作为其第一个参数,

import time
import os

class Data:
    init = 0
    cmd = ""
    ss = "$"
    commands = {}
    default = []
    temp = {"0":[]}
    startup = [False, "", ""]
    error = True
    bucket = []
    alrt = ""
    wait = 0

class File:
    def read(self, filename):
        with open(filename) as f:
            return f.read()

    def write(self, filename, contents):
        with open(filename, "w") as f:
            f.write(contents)
        return 1

class Shell:
    def clear(self):
        os.system("cls")

    def run(self, command):
        if Shell != "":
            try:
                Data.commands[command[0]]
            except:
                print("Invalid Command")

    def start(self):
        if Data.alrt != "":
            print(Data.alrt)
            Data.alrt = ""

        time.sleep(Data.wait)
        Data.wait = 0

        cmd = input(Data.ss + " ")
        self.run(cmd.split(" "))
        self.start()

    def symbol(self, symbol: str):
        Data.ss = symbol

    def new(self, command, function):
        Data.commands.update({command: [function]})

    def delete(self, command):
        del Data.commands[command]

    def getcommands(self):
        return Data.commands

    def getcommand(self, command):
        return Data.commands[command]

    def reset(self):
        Data.commands = Data.default

    def show(self, parameters):
        print(" ".join(parameters[1:]))

    def startup(self, message, dialog):
        Data.startup[0] = True
        Data.startup[1] = message
        Data.startup[2] = dialog

    def alert(self, message):
        Data.alrt = message

    def wait(self, timeAmount):
        Data.wait = timeAmount

Data.default = Data.commands

它正在开发中,启动功能还无法使用,但其他一切都可以。 希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.