创建Python命令行应用程序
因此,我编写了一个Python3库,作为应用程序的“后端”。现在我可以和解释器坐下来,导入源文件,然后使用lib进行破解——我知道如何做到这一点 但我也希望使用该库构建一个命令行“frontent”应用程序。我的库定义了几个具有高级命令的对象,应用程序应该可以看到这些命令。这样的命令可能返回一些数据结构,高级命令可以很好地打印它们。换句话说,命令行应用程序将是一个围绕lib的薄包装器,将她的输入传递给库命令,并将结果呈现给用户 我试图实现的最好的例子可能是Mercurial SCM,因为它是用Python编写的,“hg”命令完成了我想要的任务——例如,“hg commit-m message”将找到负责“commit”命令实现的代码,从用户那里传递参数并完成它的工作。在返回的过程中,它可能会得到一些结果并很好地打印出来 在Python中有一种通用的方法吗?比如将类/方法/函数公开为带有注释的“高级”命令?有人知道任何教程吗?你可以用。例如,这里是我脚本的开始 它使用带有选项的参数来选择函数。您可以定义将选项映射到函数的字典创建Python命令行应用程序,python,Python,因此,我编写了一个Python3库,作为应用程序的“后端”。现在我可以和解释器坐下来,导入源文件,然后使用lib进行破解——我知道如何做到这一点 但我也希望使用该库构建一个命令行“frontent”应用程序。我的库定义了几个具有高级命令的对象,应用程序应该可以看到这些命令。这样的命令可能返回一些数据结构,高级命令可以很好地打印它们。换句话说,命令行应用程序将是一个围绕lib的薄包装器,将她的输入传递给库命令,并将结果呈现给用户 我试图实现的最好的例子可能是Mercurial SCM,因为它是用P
cmds = {'check': do_check, 'diff': do_diff, 'install': do_install}
fn = cmds[args.command]
如果确保所有dict键都在命令选项中,则无需捕获
keyrerror
用于解析命令行参数。从那里,调用库中的方法并打印结果。您是否查看了单击?这不是一个bash问题吗?您可以在bash概要文件中使用别名命令来调用类似于python script.py args
。然后在脚本中使用类似于argparse
的东西来解析这些参数。@Bahrom我的问题远不止bash别名。很久以前,我研究过Mercurial代码,它在\@command之类的方法上有注释。该注释以某种方式神奇地将该方法添加到某个全局映射中。然后,基于hg命令(纯Python)的第一个参数,其“mercurial.dispatch”模块将选择该命令并调用它。我可能可以实现这一点,但似乎需要做很多工作。问题是是否有一些标准组件用于这些东西。一个答案是argparse,click是另一个,我一定会研究它。啊,我明白你的意思,对不起,我不知道如何做到这一点。祝你好运我要去看电影。它非常简单,支持子命令(比如“git commit”),并且已经安装。谢谢
cmds = {'check': do_check, 'diff': do_diff, 'install': do_install}
fn = cmds[args.command]