Параметры парсинга с использованием optparse
всегда были довольно непрозрачными для меня. Использование argparse
немного помогает.
Я думаю, что понимание поможет в том, что модуль optparse
на самом деле не помогает вам выполнять действия, указанные в командной строке. Скорее, он помогает вам собирать информацию из аргументов командной строки, которую вы можете использовать позже.
В этом случае собираемая вами информация хранится в кортеже (options, args)
в вашей строке:
(options, args) = parser.parse_args()
Чтобы на самом деле действовать в соответствии с этой информацией, вам придется самостоятельно проверять свой код. Мне нравится помещать подобные вещи в блок в конце моей программы, , который будет запускаться, только если он вызывается из командной строки .
if __name__ == '__main__':
if options.list:
list_my_repos()
Чтобы немного понять, как это работает, полезно понять, что вы могли бы сделать то же самое без использования optparse, используя sys.argv
.
import sys
if __name__ == '__main__':
if sys.argv[1] == '-l':
list_my_repos()
как вы, вероятно, можете видеть, однако, это будет очень хрупкая реализация. optparse
/ argparse
дает вам возможность обрабатывать более сложные случаи, не слишком занимаясь собственным программированием.