Интерпретатор аргументов Python - PullRequest
2 голосов
/ 14 февраля 2011

Есть ли правильный способ чтения аргументов в приложении Python?

Пример:

python game.py -server 127.0.0.1 -nick TheKiller1337

Есть ли правильный способ интерпретации этих аргументов?Как и сейчас, у меня есть цикл while с некоторыми if.Но это становится довольно большим.Должен ли я сделать общий класс для чтения аргументов, или это уже реализовано в Python?

Ответы [ 4 ]

9 голосов
/ 14 февраля 2011

Используйте argparse , optparse или getopt .

Все три находятся в стандартной библиотеке.

Я рекомендую argparse.Это самый новый из трех, и IMO является самым простым в использовании.Он был представлен в версии 2.7.

Если вы используете более старую версию Python, я бы порекомендовал optparse (или get argparse для версий 2.5 и 2.6 из pypi)

2 голосов
/ 14 февраля 2011

Если вы используете v2.7 или новее, вы можете использовать argparse.В документации есть примеры.

Для более ранних питонов обычно optparse.если вы скорее пишете 'C'.

Для каждого из них вам придется изменить список аргументов на более обычный.Любой из:

  • python game.py --server 127.0.0.1 --nick TheKiller1337
  • python game.py -s 127.0.0.1 -n TheKiller1337
1 голос
/ 14 февраля 2011

Вы можете использовать getopt с небольшим изменением ваших первоначальных планов. Это было бы как:

python game.py -s127.0.0.1 -nTheKiller1337 
0 голосов
/ 14 февраля 2011

Я предпочитаю optparse, потому что он поддерживается в версии 2.6 и имеет приятный интерфейс, автоматически генерирует тексты справки и поддерживает дополнительные параметры, а не только аргументы.

Вот так:

from optparse import OptionParser
parser = OptionParser()
parser.add_option("-e", "--event", dest="type", help="type of EVENT")
(options, args) = parser.parse_args()

if options.type == 'fubar':
  blah.blubb()

Вы поняли.

...