可选参数不适用于架构

时间:2013-09-17 17:57:45

标签: python schema docopt

我正在使用使用docopt的CLI的架构添加验证,但我似乎无法获得可选的工作。我想验证一下:

  • 输入文件存在
  • 使用了有效选项
  • 如果添加了PATH,则目录存在。

到目前为止这是app

"""DVget

Usage:
    DVget [-s] FILE [PATH]

    Process a file, return data based on selection
    and write results to PATH/output-file

Arguments:
    FILE        specify input file
    PATH        specify output directory (default: ./)

Options:
    -s          returns sections
    -p          returns name-sets
    -m          returns modules

"""
import os

from docopt import docopt
from schema import Schema, And, Use, Optional, SchemaError

# START OF SCRIPT
if __name__ == "__main__":

    arguments = docopt(__doc__, version="0.1")

    #print(arguments)

    schema = Schema({
        'FILE': [Use(open, error='FILE should be readable')],
        Optional('PATH'): And(os.path.exists, error='PATH should exist'),
        '-': And(str, lambda s: s in ('s', 'p', 'm'))})

    try:
        arguments = schema.validate(arguments)
        # process(arguments)
    except SchemaError as e:
        exit(e)

运行DVget -s“c:\ test.txt”,即使在schema和docopt中使用Optional,也会给出错误消息“PATH应该存在”。有什么建议吗?

0 个答案:

没有答案