这个答案来自Google网上论坛的Steven Bethard
。我将其重新发布在这里,以方便没有Google帐户的人访问。
您可以覆盖方法的默认行为
error:
import argparseimport sysclass MyParser(argparse.ArgumentParser): def error(self, message): sys.stderr.write('error: %sn' % message) self.print_help() sys.exit(2)parser = MyParser()parser.add_argument('foo', nargs='+')args = parser.parse_args()请注意,无论何时
error触发该方法,上述解决方案都会打印帮助消息。例如,
test.py--blah如果
--blah不是有效的选项,还将打印帮助消息。
如果仅在命令行中未提供任何参数的情况下才要打印帮助消息,则也许这仍然是最简单的方法:
import argparseimport sysparser=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。



