我们有一个 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库?请推荐。
您正在寻找构建自定义 REPL,请阅读评估打印循环。
您的问题非常广泛,但您可以从这里开始https://dev.to/amal/building-the-python-repl-3468
我制作了一个脚本,可以动态地将命令添加到应用程序,为其绑定一个函数并将命令的所有参数作为其第一个参数,
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
它正在开发中,启动功能还无法使用,但其他一切都可以。 希望这有帮助!