Подтвердить что ты не робот

Как разбирать аргументы командной строки в Python?

Возможный дубликат:
Каков наилучший способ захвата/разбора аргументов командной строки, переданных на Python script?

Я хотел бы иметь возможность разбирать аргументы командной строки в моей программе Python 2.6.

В идеале я хочу иметь возможность обрабатывать эти случаи:

# Show some help
./myprogram --help

# These are equivalent
./myprogram --block=1
./myprogram -b 1

# This means verbose, and twice as verbose:
./myprogram -v
./myprogram -vv
4b9b3361

Ответ 1

Проверьте argparse модуль (или optparse для более старых версий Python).
Обратите внимание, что argparse/optparse - это новые, лучшие замены для getopt, поэтому, если вы новичок в этом, это рекомендуемый вариант. Из getopt docs:

Примечание. Модуль getopt представляет собой синтаксический анализатор для параметров командной строки, API которых предназначен для того, чтобы быть знакомым пользователям функции C getopt(). Пользователи, которые не знакомы с функцией C getopt() или кто хочет писать меньше кода и получать более эффективные справки и сообщения об ошибках, должны рассмотреть возможность использования модуля argparse.

Ответ 2

У Python встроена обработка аргументов, с getopt.

Он может обрабатывать длинные и короткие формы аргументов, а также "голые" и параметризованные версии (--help versus --num=7).

Для ваших конкретных случаев использования (с немного больше) вы, вероятно, будете смотреть на что-то вроде:

opts,args = getopt.getopt(argv,"b:vVh",["block=", "verbose", "very-verbose", "help"])

Я не уверен в верхней части головы, если он допускает многосимвольные варианты с одним дефем, например -vv. Я бы просто использовал -v и -v для облегчения моей жизни.

Ответ 3

Лучшим вариантом, чем эта ссылка, являются модули OptParse или GetOpt, и в зависимости от того, какая версия Python вы используете, новейшие версии..2.7 и 3.1.2 имеют еще более новый модуль. Документация на официальной ссылке python.org имеется очень информативный набор документации и примеры для этих модулей. Если вы перейдете на python.org и просто выполните быстрый поиск OptParse или GetOpt, у вас будет все, что вам нужно.

Ответ 4

optfunc - интересный небольшой модуль. Это здорово, если вы хотите быстро написать немного script. Для больших вещей я бы пошел с argparse, как писали другие.

Ответ 5

Возможно, будет лучший способ, но я бы просто использовал sys.argv и помещал в условные выражения везде, где это необходимо.

if '--v' or '--vv' in sys.argv :
    print 'verbose message'