在我目前正在处理的应用程序中,我希望包含一个管理员可以访问某种命令行的功能。
这不是实际的命令行,而是在我定义的文本框中查找关键字,并使用输入参数运行它们的链接函数。
例如:
get user data: erikthered
...会运行方法self.user_data('erikthered')
,但我不确定如何优雅地完成此步骤,而不使用eval
或exec
这样的混乱内容。
理想情况下,这些功能也适用于多个参数
如果这个问题被认为是主观的,我很抱歉,但我之前并没有真正编写过类似的东西,我很重视其他人的见解。
谢谢
更新
使用exec
执行此操作的一种方法是使用字典,如下所示:
links = {'get users':'self.get_users(parameters)', 'get user data':'self.get_user_data(parameters)'}
terminal = self.terminal
line = str(terminal.index(INSERT).split('.')[0])
#get index of line
line = terminal.get(line+'.0', line+'.end')
splitline = line.split(':')
command = splitline[0]
parameters = splitline[1].split(',')
exec(links[command])
这是我必须获取用户键入的文本的代码,绑定到返回按下。但我不想使用exec
。
答案 0 :(得分:1)
如果您不想使用exec
,可以使用功能词典:
def get_user_data(*args):
print(*args)
# dictionary of functions
functions = {'get user data': get_user_data}
line = "get user data: erikthered, turtle"
# parse line
command, params = line.split(":")
params = [p.strip() for p in params.split(",")]
functions[command](*params)