Извлечь аргументы из скрипта Python
Позвольте мне объяснить, что я имею в виду, чтобы дать вам некоторый контекст. У меня есть несколько сценариев Python (которые используют argpars или optpars), и их результаты обычно могут быть на консолях в формате JSON, обычного текста или CSV.
Я хотел бы создать веб-приложение (например, angular + node), которое автоматически генерирует веб-страницу для каждого моего скрипта, включая поле ввода для любого аргумента, необходимого скрипту python для запуска их из пользовательского интерфейса.
Я не хочу писать для каждого скрипта Python список и тип аргументов, которые они должны запускать, но я ищу автоматический способ извлечения такого списка из каждого скрипта Python.
Я могу попытаться проанализировать вывод -h для каждого скрипта или разобрать сам скрипт (add_option), но он может быть подвержен ошибкам.
Вам известны какие-либо инструменты / скрипты / модули, которые позволяют мне делать это автоматически?
Большое спасибо.
2 ответа
inspect
Модуль поможет здесь:
>>> import inspect
>>> def example_function(a, b, c=1234):
pass
>>> inspect.getargspec(example_function)
ArgSpec(args=['a', 'b', 'c'], varargs=None, keywords=None, defaults=(1234,))
Возможно, вам придется уточнить, какой у вас есть доступ к сценариям и их анализаторам. Это чёрные ящики, которые вы можете использовать только с -h
и получить обратно справку или сообщение об использовании, или вы можете проверить parser
?
Например, при использовании argparse
Вы делаете parser
, назначьте ему некоторые атрибуты и создайте аргумент Actions
, Эти объекты действий собраны в список, parser._actions
,
смотреть на parser.format_help
а также parser.format_usage
методы, чтобы увидеть, какие значения передаются в средство форматирования справки для создания отображаемых строк.
Помимо изучения argparse.py
файл, я бы предложил создать парсер в интерактивном сеансе, и изучить объекты, которые создаются.