使用以下代码:
import argparse
parser = argparse.ArgumentParser(description="Prepare something code.")
parser.add_argument("-t","--tabular", help="print something in tabular way for EXCEL",
action="store_true")
parser.add_argument("-v","--verbose", action="store_true")
args = parser.parse_args()
if args.tabular:
print "Tabular print"
elif args.verbose:
print "VERBOSE"
只有当我按照以下方式执行时,它才会打印使用情况:
$ python mycode.py -h
usage: mycode.py [-h] [-t] [-v]
Prepare something code.
optional arguments:
-h, --help show this help message and exit
-t, --tabular print something in tabular way for EXCEL
-v, --verbose
我想要做的是简单地运行代码:$ my code.py
,无需任何-h
选项来打印用法。我怎么能这样做?
答案 0 :(得分:13)
2010年的问题涉及同样的问题,但只有1个答案。虽然答案是间接来自argparse
的设计者,但并未涵盖所有可能性。
这是一个让我感到惊讶的简单:
import sys
parser = ...
if len(sys.argv[1:])==0:
parser.print_help()
# parser.print_usage() # for just the usage line
parser.exit()
args = parser.parse_args()
是的,你可以检查所有namespace
args的默认值,但如果有很多参数,那就会变旧。但在这里我只是检查是否有任何参数字符串。如果没有,则调用解析器自己的帮助功能。
ipython
做了类似的事情以产生帮助。它会检查sys.argv
某个版本的help
,并在定义parser
之前生成自己的帮助消息。
答案 1 :(得分:2)
import argparse
parser = argparse.ArgumentParser(description="Prepare something code.")
parser.add_argument("-t","--tabular", help="print something in tabular way for EXCEL",
action="store_true")
parser.add_argument("-v","--verbose", action="store_true")
args = parser.parse_args()
if args.tabular:
print "Tabular print"
elif args.verbose:
print "VERBOSE"
else:
print parser.print_help()
答案 2 :(得分:1)
如果你只需要一个" -t"或" -v"使用,它们不是真的可选。我改为使用位置参数:
import argparse
parser = argparse.ArgumentParser(description="Prepare something code.")
parser.add_argument("type", choices=("tabular", "verbose", "t", "v"))
args = parser.parse_args()
if args.type in ("tabular", "t"):
print "Tabular print"
else: # Must be "verbose" or "v"
print "VERBOSE"
然后使用以下方法之一调用您的程序:
$ my_code t
$ my_code tabular
$ my_code v
$ my_code verbose
没有参数会产生
$ my_code
usage: my_code [-h] {tabular,verbose,t,v}
my_code: error: too few arguments