Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建Python命令行应用程序_Python - Fatal编程技术网

创建Python命令行应用程序

创建Python命令行应用程序,python,Python,因此,我编写了一个Python3库,作为应用程序的“后端”。现在我可以和解释器坐下来,导入源文件,然后使用lib进行破解——我知道如何做到这一点 但我也希望使用该库构建一个命令行“frontent”应用程序。我的库定义了几个具有高级命令的对象,应用程序应该可以看到这些命令。这样的命令可能返回一些数据结构,高级命令可以很好地打印它们。换句话说,命令行应用程序将是一个围绕lib的薄包装器,将她的输入传递给库命令,并将结果呈现给用户 我试图实现的最好的例子可能是Mercurial SCM,因为它是用P

因此,我编写了一个Python3库,作为应用程序的“后端”。现在我可以和解释器坐下来,导入源文件,然后使用lib进行破解——我知道如何做到这一点

但我也希望使用该库构建一个命令行“frontent”应用程序。我的库定义了几个具有高级命令的对象,应用程序应该可以看到这些命令。这样的命令可能返回一些数据结构,高级命令可以很好地打印它们。换句话说,命令行应用程序将是一个围绕lib的薄包装器,将她的输入传递给库命令,并将结果呈现给用户

我试图实现的最好的例子可能是Mercurial SCM,因为它是用Python编写的,“hg”命令完成了我想要的任务——例如,“hg commit-m message”将找到负责“commit”命令实现的代码,从用户那里传递参数并完成它的工作。在返回的过程中,它可能会得到一些结果并很好地打印出来

在Python中有一种通用的方法吗?比如将类/方法/函数公开为带有注释的“高级”命令?有人知道任何教程吗?

你可以用。例如,这里是我脚本的开始

它使用带有选项的参数来选择函数。您可以定义将选项映射到函数的字典

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]