Я разрабатываю скрипт управления, который выполняет довольно большой объем работы с помощью множества параметров командной строки. Первые несколько итераций скрипта использовали optparse для сбора пользовательского ввода, а затем просто запускали страницу, проверяя значение каждой опции в соответствующем порядке и, при необходимости, выполняли действие. Это привело к созданию джунглей кода, который очень трудно читать и поддерживать.командной строки arg parsing через introspection
Я ищу что-то лучшее.
Моя надежда состоит в том, чтобы иметь систему, в которой я могу писать функции более или менее нормальным образом python, а затем, когда запускается скрипт, есть варианты (и текст справки), созданные из моих функций, проанализированные и выполняемые в соответствующий заказ. Кроме того, я бы очень хотел, чтобы иметь возможность создавать интерфейсы подкоманды Джанго стиля, где myscript.py install
работает полностью отдельно от myscript.py remove
(отдельных вариантов, помощи и т.д.)
Я нашел simon willison's optfunc и это делает много из этого, но, кажется, просто пропустить отметку - я хочу написать каждый ВАРИАНТ как функцию, а не пытаться сжать весь набор параметров в огромную строку параметров.
Я представляю архитектуру с набором классов для основных функций и каждый определенный метод класса, соответствующий конкретной опции в командной строке. Эта структура обеспечивает преимущество того, чтобы каждый вариант находился рядом с функциональным кодом, который он модифицирует, ослабляя обслуживание. То, что я не знаю, как справиться с этим, - это упорядочение команд, поскольку упорядочение методов класса не является детерминированным.
Прежде чем я перейду на новое колесо: существуют ли другие существующие биты кода, которые ведут себя одинаково? Другие вещи, которые легко изменить? Задавая вопрос, я прояснил свое собственное мнение о том, что было бы хорошо, но обратная связь о том, почему это ужасная идея или как она должна работать, будет приветствоваться.
Спасибо, это похоже на хороший совет. –
Это отлично! –