import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
const=sum, default=max,
help='sum the integers (default: find the max)')
args = parser.parse_args()
print(args.accumulate(args.integers))
Assuming the Python code above is saved into a file called prog.py
$ python prog.py -h
Ref-link: https://docs.python.org/3.3/library/argparse.html
import argh
# declaring:
def echo(text):
"Returns given word as is."
return text
def greet(name, greeting='Hello'):
"Greets the user with given name. The greeting is customizable."
return greeting + ', ' + name
# assembling:
parser = argh.ArghParser()
parser.add_commands([echo, greet])
# dispatching:
if __name__ == '__main__':
parser.dispatch()
18条答案
按热度按时间djp7away1#
标准库中的标准解决方案是
argparse
(文件):以下是一个例子:
q9rjltbz2#
import sys
print(sys.argv[1:])
mutmk8jj3#
仅仅是为了这些原因而四处传福音,哪一个更好。。基本上:
(从链接复制)
argparse模块可以处理位置参数和可选参数,而optparse只能处理可选参数
argparse对于命令行界面应该是什么样子并不是教条式的-支持-file或/file等选项,以及必需的选项。optparse拒绝支持这些功能,更倾向于纯粹性而非实用性
argparse生成更多信息性的用法消息,包括根据参数确定的命令行用法,以及位置参数和可选参数的帮助消息。optparse模块要求您编写自己的使用字符串,并且无法显示位置参数的帮助。
argparse支持使用数量可变的命令行arg的操作,而optparse要求提前知道参数的确切数量(例如1、2或3)
argparse支持分派到子命令的解析器,而optparse需要设置
allow_interspersed_args
以及手动执行解析器分派我个人最喜欢的是:
argparse允许类型和操作参数
add_argument()
要使用简单的可调用项指定,而optpass需要黑客类属性,如STORE_ACTIONS
或CHECK_METHODS
要获得正确的参数检查cigdeys34#
还有
argparse
stdlib模块(stdlib上的“改进”optparse
模块)。argparse简介中的示例:用法:
zour9fqk5#
如果你需要一些快速且不太灵活的东西
main.py:
然后跑
python main.py James Smith
要生成以下输出:你好,詹姆斯·史密斯
vtwuwzda6#
一种方法是使用
sys.argv
. 这将打印脚本名称作为第一个参数以及传递给它的所有其他参数。ibrsph3r7#
docopt库真的很流畅。它根据应用程序的用法字符串构建参数dict。
例如,从docopt自述文件:
fbcarpbf8#
7y4bm7vi9#
我自己也使用optparse,但非常喜欢simon willison最近推出的optfunc库所采用的方向。其工作原理如下:
“内省函数定义(包括其参数及其默认值),并使用该定义构造命令行参数解析器。”
例如,此函数定义:
已转换为此OptPass帮助文本:
ajsxfq5m10#
我喜欢stdlib的getopt,例如:
最近我一直在 Package 类似的东西,以使事情不那么冗长(例如;使“-h”隐式)。
xsuvu9jc11#
正如您所看到的“optparse”,optparse模块已被弃用,不会进一步开发;argparse模块将继续开发。”
u7up0aaq12#
pocoo的点击更加直观,所需的样板文件更少,并且至少与argparse一样强大。
到目前为止,我遇到的唯一缺点是,您无法对帮助页面进行太多定制,但这通常不是一个要求,而docopt似乎是一个明确的选择。
eqfvzcg813#
d7v8vwbk14#
您可能会对我编写的一个小python模块感兴趣,该模块使命令行参数的处理变得更加容易(开源和免费使用)——commando
bmvo0sr515#
另一个选择是argh。它以argparse为基础,允许您编写以下内容:
它将自动生成帮助等等,您可以使用decorator提供关于arg解析应该如何工作的额外指导。