在没有任何参数的情况下调用脚本时,用python argparse显示帮助信息
这可能是一个简单的。 假设我有一个使用argparse来处理命令行参数/选项的程序。 以下将打印“帮助”消息:
./myprogram -h 要么:
 ./myprogram --help 
但是,如果我没有任何争论地运行脚本,它什么也不做。 我想要它做的是显示使用消息,当它被调用没有参数。 这是怎么做的?
这个答案来自于Google小组的 Steven Bethard。 为了让没有Google帐户的用户能够更轻松地访问,我将其重新发布。
 您可以覆盖error方法的默认行为: 
 import argparse import sys class MyParser(argparse.ArgumentParser): def error(self, message): sys.stderr.write('error: %s\n' % message) self.print_help() sys.exit(2) parser=MyParser() parser.add_argument('foo', nargs='+') args=parser.parse_args() 
 请注意,上述解决scheme将在触发error方法时打印帮助消息。 例如,如果--blah不是有效的选项, test.py --blah也会打印帮助信息。 
如果只在命令行中没有提供参数的情况下打印帮助信息,那么也许这仍然是最简单的方法:
 import argparse import sys parser=argparse.ArgumentParser() parser.add_argument('foo', nargs='+') if len(sys.argv)==1: parser.print_help() sys.exit(1) args=parser.parse_args() 
而不是写一个类,try / except可以用来代替
 try: options = parser.parse_args() except: parser.print_help() sys.exit(0) 
好处是工作stream程更清晰,不需要存根类。 缺点是第一个“使用”行被打印两次。
这将需要至less一个强制性的参数。 没有强制参数,在命令行中提供零参数是有效的。
有了argparse,你可以做:
 parser.argparse.ArgumentParser() #parser.add_args here #sys.argv includes a list of elements starting with the program if len(sys.argv) < 2: parser.print_usage() sys.exit(1) 
如果您必须为运行脚本指定参数,请使用ArgumentParser 所需的参数,如下所示:
 parser.add_argument('--foo', required=True) 
如果脚本运行时没有任何参数,parse_args()将报告一个错误。
把我的版本扔进这堆:
 import argparse parser = argparse.ArgumentParser() args = parser.parse_args() if not vars(args): parser.print_help() parser.exit(1) 
 您可能会注意到parser.exit – 我主要这样做,因为它保存了一个导入行,如果这是文件中sys的唯一原因… 
 如果您将(子)parsing器的默认函数关联起来,就像在add_subparsers下提到的add_subparsers ,您可以简单地将它添加为默认的操作: 
 parser = argparse.ArgumentParser() parser.set_defaults(func=lambda x: parser.print_usage()) args = parser.parse_args() args.func(args) 
如果由于缺less位置参数而引发exception,请添加try-except。
用nargs设置你的位置参数,并检查位置参数是否为空。
 import argparse parser = argparse.ArgumentParser() parser.add_argument('file', nargs='?') args = parser.parse_args() if not args.file: parser.print_help() 
参考Python nargs
你可以使用optparse
from optparse import OptionParser, make_option parser = OptionParser() parser.add_option('--var', help='put the help of the commandline argument') (options, args) = parser.parse_args() ./myprogram --help will print all the help messages for each given argument.from optparse import OptionParser, make_option parser = OptionParser() parser.add_option('--var', help='put the help of the commandline argument') (options, args) = parser.parse_args() ./myprogram --help will print all the help messages for each given argument.