from entrypoint2 import entrypoint
@entrypoint
def add(file, quiet=True):
''' This function writes report.
:param file: write report to FILE
:param quiet: don't print status messages to stdout
'''
print file,quiet
帮助文本:
usage: report.py [-h] [-q] [--debug] file
This function writes report.
positional arguments:
file write report to FILE
optional arguments:
-h, --help show this help message and exit
-q, --quiet don't print status messages to stdout
--debug set logging level to DEBUG
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()
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
18条答案
按热度按时间ajsxfq5m1#
我喜欢stdlib的getopt,例如:
最近我一直在 Package 类似的东西,以使事情不那么冗长(例如;使“-h”隐式)。
mo49yndu2#
我的解决方案是entrypoint2。例子:
帮助文本:
wbrvyc0a3#
此外,在python3中,您可能会发现使用扩展iterable解包处理可选位置参数很方便,而无需附加依赖项:
以上
argv
开箱制造arg2
及arg3
“可选”-如果未在中指定argv
,则为无,如果未指定第一个,则valueerror为thouwn:ckocjqey4#
我建议将docopt作为这些其他产品的简单替代品。
docopt是一个新项目,其工作原理是解析--help用法消息,而不是要求您自己实现所有内容。你只需要把你的使用信息放在posix中。
bmvo0sr55#
另一个选择是argh。它以argparse为基础,允许您编写以下内容:
它将自动生成帮助等等,您可以使用decorator提供关于arg解析应该如何工作的额外指导。
d7v8vwbk6#
您可能会对我编写的一个小python模块感兴趣,该模块使命令行参数的处理变得更加容易(开源和免费使用)——commando
eqfvzcg87#
u7up0aaq8#
pocoo的点击更加直观,所需的样板文件更少,并且至少与argparse一样强大。
到目前为止,我遇到的唯一缺点是,您无法对帮助页面进行太多定制,但这通常不是一个要求,而docopt似乎是一个明确的选择。
xsuvu9jc9#
正如您所看到的“optparse”,optparse模块已被弃用,不会进一步开发;argparse模块将继续开发。”
djp7away10#
标准库中的标准解决方案是
argparse
(文件):以下是一个例子:
7y4bm7vi11#
我自己也使用optparse,但非常喜欢simon willison最近推出的optfunc库所采用的方向。其工作原理如下:
“内省函数定义(包括其参数及其默认值),并使用该定义构造命令行参数解析器。”
例如,此函数定义:
已转换为此OptPass帮助文本:
fbcarpbf12#
ibrsph3r13#
docopt库真的很流畅。它根据应用程序的用法字符串构建参数dict。
例如,从docopt自述文件:
vtwuwzda14#
一种方法是使用
sys.argv
. 这将打印脚本名称作为第一个参数以及传递给它的所有其他参数。zour9fqk15#
如果你需要一些快速且不太灵活的东西
main.py:
然后跑
python main.py James Smith
要生成以下输出:你好,詹姆斯·史密斯