仅在给出可选零件时进行DOCOPT才能进行

  • 本文关键字:零件 DOCOPT python docopt
  • 更新时间 :
  • 英文 :


我正在尝试学习pythons docopt模块,并具有以下简单脚本:

""" Usage:
rsnapshot-once [-c CFGFILE] (sync|hourly|daily|monthly)
    -c CFGFILE  specify the configfile that rsnapshot should use
"""
import logging
import sys
from docopt import docopt
args = docopt(__doc__, version='0.0.1-alpha')
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG, formatter=logging.BASIC_FORMAT)
logging.debug("Parsed arguments:n" + str(args));
if not args.get("-c"):
    args['CFGFILE'] = "/etc/rsnapshot.conf"

从命令行调用-c选项时:

% ./rsnapshot-once.py -c someconfigfile sync                                                                
DEBUG:root:Parsed arguments:
{'-c': True,
 'CFGFILE': 'someconfigfile',
 'daily': False,
 'hourly': False,
 'monthly': False,
 'sync': True}

仅传递命令时:

% ./rsnapshot-once.py daily                                                                               
Usage:
        rsnapshot-once [-c CFGFILE] (sync|hourly|daily|monthly)

看来,我正在误解一些东西。谁能给我提示,我做错了什么?

谢谢

您在此处给出的作品的示例。因此,Maye与您正在使用的Docopt版本有关。关于您几乎在正确的轨道上,只缺少一些小细节。

在选项之前,应该有一条"选项:"的行。Docopt寻求此内容,然后解释以后的行。在选项部分中,也可以为选项设置默认值。

这是一个示例:

"""Usage:
  rsnapshot-once [-c CFGFILE] (sync|hourly|daily|monthly)
Options:
  -c CFGFILE  specify the configfile that rsnapshot should use 
              [default: /etc/rsnapshot.conf]
"""

然后,用户还将看到默认值是什么。

我使它起作用。最后,问题是我使用选项卡将用法格式化docstring格式化:

"""
tttUsage:
tttrsnapshot-once [-c CFGFILE] (sync|hourly|daily|monthly)
tttOptions:
ttt-c CFGFILE        specify the configfile that rsnapshot should use
"""

当我将其更改为:

"""
            Usage:
            rsnapshot-once [-c CFGFILE] (sync|hourly|daily|monthly)
            Options:
            -c CFGFILE      specify the configfile that rsnapshot should use
"""

它可以正常工作...

我发现问题是什么后,我发现了一个类似的问题:

编辑:从功能的角度来看,当不使用选项卡时正确解析了参数。但是,如果呼叫是错误的,只有"用法:" - docstring的一部分是打印的。"选项:" - 部分不是。你们中的任何人都可以确认吗?

例如,比较这些变体:

1a。有效的电话

1B。无效呼叫(未打印选项部分)

2a。有效的电话(但不工作)

2b。无效的呼叫(如预期打印文本)

相关内容

  • 没有找到相关文章

最新更新