首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用docopt传递多个参数

如何使用docopt传递多个参数
EN

Stack Overflow用户
提问于 2015-02-19 09:27:24
回答 1查看 957关注 0票数 1

我想传递两个强制参数,一个可选参数给我的程序使用docopt。我使用的代码是:

代码语言:javascript
复制
"""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

当我使用上面的命令运行上面的程序时,我得到了显示我编写的用法的错误消息。这里出了什么问题,我怎么能用一个以上的“论点”呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-19 15:47:47

将参数括在<...>中,否则它们只是作为命令被三分。这应该是可行的:

代码语言:javascript
复制
"""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()
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28602694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档