Python 未处理的选项

Python 未处理的选项,python,shell,getopt,Python,Shell,Getopt,我刚刚遇到了这个问题: couchy.py -H myhost-a version -E no connection --nagios couchy.py是我使用getopt的工具 请注意,调用参数中有一个错误:no connection没有被引用(应该是“no connection”),因此-E标志只将no视为参数。更糟糕的是,还有一个令人讨厌的副作用:--nagios标志未被处理。似乎与选项标志无关的第一个条目(在本例中为连接)停止了标志处理 因此,我的工具没有生成适合nagios的退出

我刚刚遇到了这个问题:

couchy.py -H myhost-a version -E no connection --nagios 
couchy.py
是我使用
getopt
的工具

请注意,调用参数中有一个错误:
no connection
没有被引用(应该是
“no connection”
),因此
-E
标志只将
no
视为参数。更糟糕的是,还有一个令人讨厌的副作用:
--nagios
标志未被处理。似乎与选项标志无关的第一个条目(在本例中为连接)停止了标志处理

因此,我的工具没有生成适合nagios的退出代码,只是一个正常的退出代码(在本例中为
0
),nagios将其解释为
OK:no error
,我错过了报警


因为我经常犯这个错误(没有正确引用参数),所以我想避免产生副作用:有没有办法强制getopt处理所有标志,直到命令行结束?

有什么理由避免使用
argparse
?除了我必须重写一些代码之外,什么都没有。
argparse
是否解决了此问题?
argparse
的任何其他优点?这是最先进的吗?
getopt
是否已弃用?
argparse
的工作方式与本例中的工作方式相同,将最后一个
--nagios
视为一个选项。它包含在Python2.7中,如果您一直使用较旧的python版本,则可以在这些版本上安装
argparse
模块。如果不引用
no connection
是一个错误,是否还有其他副作用需要担心,例如
coach.py
无法正常工作?我会在寻找黑客来减轻这个错误之前,进行正确的引用。