假设我有一个程序使用argparse
处理命令行参数/选项。以下将打印“帮助”消息:
./myprogram -h
or:
./myprogram --help
但是,如果我在没有任何参数的情况下运行脚本,它不会执行任何操作。我想要它做的是在不带参数调用它时显示使用消息。这是怎么做到的?
这个答案来自史蒂文·贝萨德在 Google 群组中 http://groups.google.com/group/argparse-users/browse_thread/thread/2dacd5fed110bd0c?pli=1。我将其重新发布到此处,以便没有 Google 帐户的人可以更轻松地访问。
您可以覆盖默认行为error
method:
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 建议 https://stackoverflow.com/questions/4042452/display-help-message-with-python-argparse-when-script-is-called-without-any-argu/4042861?noredirect=1#comment84996345_4042861, use parser.print_help(sys.stderr)
打印到 stderr。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)