docopt не применяет значение по умолчанию

У меня есть следующая строка использования:

    usage = """Usage: 
    counts_editing_precent_total_editing_to_csv.py out <output> files <pileupPercentFiles>... [--percentageField=<kn>] [--numReadsField=<kn>]
    counts_editing_precent_total_editing_to_csv.py -h | --help

Options:
     -h --help  show this screen.
     --percentageField=<kn>  the column of the percent field in the input file  [default: 7] .
     --numReadsField=<kn>  the column of the num of reads field in the input file  [default: 4] .

    """

а затем я выполняю этот код

    args = docopt(usage)
    print(args)

Я запускаю следующую команду:

python <filename>.py out a files a b c

Результат:

{'--help': False,
 '--numReadsField': None,
 '--percentageField': None,
 '-h': False,
 '<output>': 'a',
 '<pileupPercentFiles>': ['a', 'b', 'c'],
 'files': True,
 'out': True}

Как видите, значения по умолчанию не используются. Я видел другие подобные вопросы, где решение было «Имейте два пробела между командой и ее описанием», и я убедился, что у меня есть. Я действительно не могу отличить мой пример от того, который появляется в документах.


person Eliran Turgeman    schedule 16.06.2020    source источник


Ответы (1)


Я запустил его, и он работает. Помните, что вы должны поместить строку использования перед from docopt import docopt в верхней части файла. Вот скрипт для его воспроизведения.

"""Usage:
    counts_editing_precent_total_editing_to_csv.py out <output> files <pileupPercentFiles>... [--percentageField=<kn>] [--numReadsField=<kn>]
    counts_editing_precent_total_editing_to_csv.py -h | --help

Options:
     -h --help  show this screen.
     --percentageField=<kn>  the column of the percent field in the input file  [default: 7] .
     --numReadsField=<kn>  the column of the num of reads field in the input file  [default: 4] .

"""
from docopt import docopt
ARGUMENTS = docopt(__doc__)
print(ARGUMENTS)    

person Pani    schedule 16.06.2020
comment
Честно говоря забыл про то что он должен быть в самом верху файла но даже после изменения выдаёт тот же словарь - person Eliran Turgeman; 16.06.2020
comment
Можете ли вы предоставить свой код? Или запустить тот, который я предоставил? - person Pani; 16.06.2020
comment
Не должно быть использования =, например, как в вашем вопросе - person Pani; 16.06.2020
comment
Между нашими строками была разница, я запустил diff и получил это: ``` 1c1 ‹ Usage: --- › Usage: 10c10 ‹ --- › ``` - person Eliran Turgeman; 16.06.2020