Во-первых, почему вы вызываете свой скрипт дважды?
python main.py main.py --outfile thing # Will not work
python main.py --outfile thing # This will be enough
Во-вторых, раздел использования docopt покажет вам другой способ вызова скрипта.
Usage:
main.py controller
main.py model
main.py form
main.py -h | --help
main.py --version
main.py model
работа, потому что это описано здесь.Но --outfile
нигде в этом разделе использования не появляется, поэтому docopt рассматривает его как ложный ввод.И именно поэтому скрипт всегда возвращает справку.
Если вы хотите использовать эту опцию, вы должны описать ее в «Использование».
Вы можете сделать это так:
Usage:
main.py controller
main.py model [--outfile]
Скобка говорит о том, что опция не является обязательной, используйте () для обязательных опций.
Еще один момент, даже если вы впервые вызываете ошибки отображения, options
не должно появляться в словаре, возможно, выследует оставить пустым, прежде чем в документации.Ни screen
, ни this.
и так далее ... Попробуйте что-то вроде этого:
"""Main.py
Usage:
main.py controller [--outfile]
main.py model [--outfile]
main.py form [--outfile]
main.py (-h | --help)
main.py --version
Options:
-h, --help Show this screen.
--version Show version.
--outfile Output file.
"""
from docopt import docopt
if __name__ == '__main__':
arguments = docopt(__doc__, version='Main.py 1.0')
print(arguments)