3

我在我的脚本中使用以下 args 和 docopt

Usage:
GaussianMixture.py --snpList=File --callingRAC=File

Options:
-h --help     Show help.
snpList     list snp txt
callingRAC      results snp

我想添加一个对我的脚本有条件结果的参数:更正我的数据或不更正我的数据。就像是 :

Usage:
GaussianMixture.py --snpList=File --callingRAC=File  correction(--0 | --1)

Options:
-h --help     Show help.
snpList     list snp txt
callingRAC      results snp
correction      0 : without correction | 1 : with correction 

我想在我的脚本if中添加一些功能

def func1():
  if args[correction] == 0:
      datas = non_corrected_datas
  if args[correction] == 1:
      datas = corrected_datas

但我不知道如何在我的脚本中使用它。

4

2 回答 2

3

编辑: 我的原始答案没有考虑到 OP 要求 --correction 是强制性的。我的原始答案中的语法不正确。这是一个经过测试的工作示例:

#!/usr/bin/env python
"""Usage:
    GaussianMixture.py --snpList=File --callingRAC=File --correction=<BOOL>

Options:
    -h, --help          Show this message and exit.
    -V, --version       Show the version and exit
    --snpList         list snp txt
    --callingRAC      results snp
    --correction=BOOL Perform correction?  True or False.  [default: True]

"""

__version__ = '0.0.1'

from docopt import docopt

def main(args):
    args = docopt(__doc__, version=__version__)
    print(args)

    if args['--correction'] == 'True':
        print("True")
    else:
        print("False")

if __name__ == '__main__':
    args = docopt(__doc__, version=__version__)
    main(args)

请让我知道这是否适合您。

于 2016-12-07T17:10:30.323 回答
3

并非所有选项都必须在docopt. 换句话说,您可以改用标志参数。这是从用户那里获取布尔值的最直接的方法。话虽如此,您可以简单地执行以下操作。

"""
Usage:
  GaussianMixture.py (--correction | --no-correction)

Options:
  --correction      With correction
  --no-correction   Without correction
  -h --help     Show help.
"""
import docopt


if __name__ == '__main__':
    args = docopt.docopt(__doc__)
    print(args)

于 2020-06-15T07:53:20.343 回答