这个答案来自Google网上论坛的Steven Bethard 。我将其重新发布在这里,以方便没有Google帐户的人访问。
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()
请注意,无论何时error
触发该方法,上述解决方案都会打印帮助消息。例如,test.py --blah
如果--blah
不是有效的选项,还将打印帮助消息。
如果仅在命令行中未提供任何参数的情况下才要打印帮助消息,则也许这仍然是最简单的方法:
import argparse
import sys
parser=argparse.ArgumentParser()
parser.add_argument('foo', nargs='+')
if len(sys.argv)==1:
parser.print_help(sys.stderr)
sys.exit(1)
args=parser.parse_args()
请注意,parser.print_help()
默认情况下会打印到标准输出。正如init_js
建议的那样,用于parser.print_help(sys.stderr)
打印到stderr。