简体   繁体   English

如何使用docopt传递多个参数

[英]How to pass more than one arguments with docopt

I want to pass two mandatory argument, one optional argument to my program using docopt. 我想使用docopt向我的程序传递两个强制参数,一个可选参数。 The code I am using is: 我使用的代码是:

"""Setup

Usage: myprog.py server_name config [--help] [options] 

Arguments:
    SERVER_NAME        Server Name (a1, a2)
    CONFIG             Config file with full path

Options:
    -h --help
    -r --start      Start the server if yes [default: 'no']
"""

from docopt import docopt

class ServerSetup(object):
    def __init__(self, server_name, config_file, start_server):
        self.server = server_name
        self.config = config_file
        self.start_server = start_server

    def print_msg(self):
        print self.server
        print self.config
        print self.start_server

if __name__ == '__main__':
    args = docopt(__doc__)
    setup = ServerSetup(server_name=args['SERVER_NAME']),
                        config=args['CONFIG']
                        start_rig=args['-r'])
    setup.print_msg()

$python myprog.py a1 /abc/file1.txt $ python myprog.py a1 /abc/file1.txt

When I run above program using above command, I get error message displaying usage that I've written. 当我使用上述命令在上述程序中运行时,出现错误消息,显示我编写的用法。 What is going wrong here, how can I use more than one 'Arguments'? 这里出了什么问题,我如何使用多个“参数”?

Enclose arguments in <...>, otherwise they are just threated as commands. 将参数括在<...>中,否则它们将作为命令受到威胁。 This should work: 这应该工作:

"""Setup

Usage: myprog.py [options] <SERVER_NAME> <CONFIG>

Arguments:
    SERVER_NAME        Server Name (a1, a2)
    CONFIG             Config file with full path

Options:
    -h, --help
    -r, --start        Start the server if yes [default: 'no']
"""

from docopt import docopt

class ServerSetup(object):
    def __init__(self, server_name, config_file, start_server):
        self.server = server_name
        self.config = config_file
        self.start_server = start_server

    def print_msg(self):
        print self.server
        print self.config
        print self.start_server

if __name__ == '__main__':
    args = docopt(__doc__)
    print args
    setup = ServerSetup(server_name=args['<SERVER_NAME>'],
                        config_file=args['<CONFIG>'],
                        start_server=args['--start'])
    setup.print_msg()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM