Некоторые вопросы использования Python argparse: получение аргументов - PullRequest
1 голос
/ 18 августа 2011

Некоторые вопросы, которые я не смог понять, прочитав документы и некоторые другие вопросы.

1: Я был озадачен «как я могу получить аргументы», поэтому я оглянулся и кто-то предложил использовать функцию __dict __ для доступа к ней, как к словарю. Что работает, но так ли это? Это кажется довольно распространенным явлением, но в документах это нигде не очевидно. Если я пропустил это, может кто-то может указать на это? Это определенно не было на вершине.

2: argparse был представлен в 2.7, но некоторые люди отказываются получать более новые версии python и продолжают придерживаться более старых, таких как 2.5, 2.6, по неизвестным мне причинам. Мое решение для работы с ними - взять модуль argparse и поместить его в мою собственную директорию скриптов. Есть ли проблемы с этим решением? Кажется, работает по крайней мере.

Ответы [ 2 ]

4 голосов
/ 18 августа 2011

Вы можете использовать функцию parse_args() для получения параметров.Например:

parser = argparse.ArgumentParser(description="Test")
parser.add_argument('command')

parameters = parser.parse_args()
cmd = parameters.command

Чтобы ответить на второй вопрос, делать это не рекомендуется.Простого добавления модуля будет недостаточно, поскольку у вас могут возникнуть проблемы с зависимостями (т. Е. Внутренне для argparse может потребоваться что-то еще, что было доступно только в 2.7).Старая, но устаревшая версия - optparse .

3 голосов
/ 18 августа 2011

Объявление 1: Извлечение значений довольно легко:

parser.add_argument('--some_arg', action='store')
parser.add_argument('--some_flag', action='store_true')

args = parser.parse_args()

теперь к значениям можно получить доступ с помощью args.some_arg или args.some_flag, как видно из документации .

Объявление 2. Поскольку argparse был представлен в 2.7, многие люди используют старую версию optparse для обратной совместимости, поскольку модуль может быть недоступен.Синтаксис довольно одинаковый.Мое решение состоит в том, чтобы попытаться проанализировать argparse и использовать optparse в качестве запасного варианта.

...