这可能很简单。假设我有一个使用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()
请注意,无论何时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。
本文向大家介绍winforms 使用帮助类显示帮助,包括了winforms 使用帮助类显示帮助的使用技巧和注意事项,需要的朋友参考一下
帮助消息 代码
问题内容: 我喜欢javascript,所以当我听说基于V8的Javascript运行时Node.js时,我感到非常兴奋。我更喜欢用Javascript编写外壳脚本。我的问题是:如何在不调用的情况下运行脚本?在我编写完脚本之后,它会尝试作为bash脚本而不是Node.js javascript运行。 问题答案: 使您当前的外壳开始bash的原因是您当前的外壳(bash?)不知道如何处理file.j
问题内容: 通常,要将调试器附加到正在运行的jvm,您需要使用以下参数启动jvm: 现在,如果我要调试不是在调试模式下启动的进程,该怎么办? 当生产系统(即在没有调试args的情况下启动)显示“随机”(我用宽松的术语)错误时,就会出现这种情况。因此,我无法使用适当的参数重新启动jvm,因为没人知道如何再次再现该错误。在这种情况下是否不可能附加到JVM? 只是为了澄清,除非将它们以调试方式启动,否则
问题内容: 我有一个带有GET处理程序的简单控制器,该处理程序接受一个对象来绑定请求参数: 这是一个简单的POJO类: 一切正常,但我想摆脱设置者,使该对象不可变为公共使用。在Spring 5.0.2 之前的处理程序方法文档中,我们了解到可能的有效方法参数是: 命令或表单对象将请求参数绑定到Bean属性(通过设置器) 或直接 绑定 到字段 是否可以以某种方式覆盖默认的Spring Boot配置,以
拉斯宾(杰西)-root@RaspberryPi-腻子 在我输入的终端中 现在我得到了一个包含此代码的脚本 有一个cronjob每小时启动一次这个脚本 苏。一定有什么地方出错了。因为他将变量$finalanswer解读为nothing。 这意味着在此脚本之外定义的变量将不起作用? 我该如何解决这个问题?