2015-04-20 4 views
1

Итак, я пытаюсь запустить odd_even_example.py из docopt examples git repo.Базовый пример Docopt не работает

Независимо от того, что я пытаюсь сделать, или измените, пример не будет работать должным образом.

Когда я:

python odd_even_example.py 1 2 3 4 

Я ожидаю увидеть словарь с параметрами командной строки или аргументов, которые я прошел. Но вместо этого я просто возвращаю строку __doc__ снова и снова.

Я смущен, потому что я только что скопировал и выполнил файл дословно из примеров репо, и он прямо сломан.

Это содержимое файла:

"""Usage: odd_even_example.py [-h | --help] (ODD EVEN)... 
Example, try: 
    odd_even_example.py 1 2 3 4 
Options: 
    -h, --help 
""" 
from docopt import docopt 


if __name__ == '__main__': 
    arguments = docopt(__doc__) 
    print(arguments) 
+1

Можете ли вы определить, что «* не будет работать должным образом» означает? – miradulo

+0

Отредактировано для определения того, что означает «не работает должным образом». –

+0

Работайте для меня. Какую версию python и какую ОС вы используете? –

ответ

1

У меня была такая же проблема, и я думаю, что проблема с ли или не вы вводите что-то для (ODD EVEN) части команды. Я немного поиграл с ним и до сих пор не понимаю, как именно это предназначено для работы, но вот пример, который работает так, как вы ожидаете. Он принимает одно или несколько чисел в качестве входных данных и выводит результаты на стандартный вывод.

"""Usage: odd_even_example.py [-h | --help] (NUMBERS)... 

Example, try: 
    odd_even_example.py 1 2 3 4 

Options: 
    -h, --help 
""" 
from docopt import docopt 

def is_even(x): 
    xIsEven = x%2 == 0 
    if xIsEven: 
     return 'EVEN' 
    else: 
     return 'ODD' 

if __name__ == '__main__': 
    arguments = docopt(__doc__) # returns a dictionary 
    print(arguments) 
    numbers_entered = [int(i) for i in arguments['NUMBERS']] 
    answers = [is_even(x) for x in numbers_entered] 
    print(answers)