编程语言
首页 > 编程语言> > python-optparse():输入验证

python-optparse():输入验证

作者:互联网

如果已经在某处回答了我,请提前道歉;自上小时以来,我一直在python网站.但还没有弄清楚我该怎么做.我的脚本应采用以下选项:

myScript.py -f <file-name> -e [/ -d]
myScript.py -s <string> -e [/ -d]
myScript.py -f <file-name> [/ -s <string>] -e -w [<file_name>]

即-f / -s,-e / -d是必选选项,但-f& -s不能一起使用,并且与-e& -d选项相同-不能一起使用.如何将支票放到位?

如果我可能同时问另一个问题:如何将-w选项(使用时)与值一起使用或不带值?如果未提供任何值,则应采用默认值,否则应使用提供的默认值.
任何帮助,不胜感激.干杯!!

解决方法:

自从我对optparse做任何事情以来已经有一段时间了,但是我对docs和一个旧程序进行了简要介绍.

“ -f / -s,-e / -d是必选选项,但-f& -s不能一起使用,并且与-e& -d选项相同-不能一起使用.如何将支票放在适当的位置?

为了实现互斥,您必须自己进行检查,例如:

parser.add_option("-e", help="e desc", dest="e_opt", action="store_true")
parser.add_option("-d", help="d desc", dest="d_opt", action="store_true")
(opts, args) = parser.parse_args()
if (parser.has_option("-e") and parser.has_option("-d")):
    print "Error!  Found both d and e options.  You can't do that!"
    sys.exit(1)

由于此处的示例选项是布尔值,因此可以将上面的if行替换为:

if (opts.e_opt and opts.d_opt):

有关更多信息,请参见部分How optparse handles errors.

“如何将-w选项(如果使用)与值一起使用或不使用值?”

我从来没有想过有一个optparse选项的方法,该选项的值是可选的. AFAIK,您必须将选项设置为具有值或不具有值.我最接近的是为必须具有值的选项指定default value.然后,不必在命令行上指定该条目.样例代码:

parser.add_option("-w", help="warning", dest="warn", default=0)

除了一个(非常有用的)建议:

如果您看过这些文档,您确实会看到有关“强制性选择”是一种矛盾的部分,对吗? ;-p幽默之外,您可能需要考虑重新设计界面,以便:

>所需信息未使用“选项”输入.
>只有一个参数(或一组参数)输入可能互斥的数据.换句话说,用“ -e on”或“ -e off”代替“ -e”或“ -d”.如果您想要类似“ -v”的详细信息和“ -q”的安静/详细信息,则可以将值存储到一个变量中:

parser.add_option("-v", help="verbose on", dest="verbose", action="store_true")
parser.add_option("-q", help="verbose off", dest="verbose", action="store_false")

这个特定的例子是从Handling boolean (flag) options节借用的(稍有扩展).对于类似的事情,您可能还想看看Grouping Options节;我尚未使用此功能,因此不再赘述.

标签:optparse,validation,python
来源: https://codeday.me/bug/20191102/1991340.html