我正在尝试学习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)
看来我误会了。谁能给我一个提示,我在做什么错?
谢谢
最佳答案
您给出的示例在这里起作用。因此,可能与您使用的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]
"""
然后,用户还将看到默认值是什么。
关于python - Docopt仅在给出可选零件时继续进行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46084887/