【问题标题】:How to pass more than one arguments with docopt如何使用 docopt 传递多个参数
【发布时间】:2023-03-08 18:07:01
【问题描述】:

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

"""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 docopt


    【解决方案1】:

    将参数括在 <...> 中,否则它们只会作为命令受到威胁。这应该有效:

    """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()
    

    【讨论】:

    • 明白了。很好用,谢谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    相关资源
    最近更新 更多