Аргумент Python для обеспечения менее похожей функциональности ограничения - PullRequest
3 голосов
/ 16 ноября 2011

Любая идея, если есть чистый способ сделать optparse обход / обработку универсальной опции -XXX?

Мой случай - это приложение, для которого я хочу предоставитьless как опция для ограничения выходных записей приложения числом, определенным после -

например,

myapp.py list -10

я думаю, я мог бы перезаписать sys.argv диктовку, чтобы избежать optparseот появления ошибки и ручного разбора / удаления пользовательского аргумента, но мне интересно, если это случай, который предусмотрена optparse lib и предоставляет лучший способ сделать это.

1 Ответ

0 голосов
/ 17 ноября 2011

В argparse вы можете определить необязательный позиционный целочисленный аргумент. Отрицательные значения будут выглядеть для пользователя, как если бы вы предоставили опцию:

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('limit', type=int, nargs='?')
args = parser.parse_args()
if args.limit is not None:
    print "Limiting to %d." % -args.limit

Текст справки по умолчанию в этом случае недопустим, но его можно изменить с помощью аргумента ключевого слова metavar на add_argument, например, используя. "-n".

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

from optparse import OptionParser
parser = OptionParser()
parser.add_option("-1")
parser.add_option("-2")
options,args = parser.parse_args()
if options.__dict__["1"] is not None:
    print "Your number was %d." % (int("1"+options.__dict__["1"]))
elif options.__dict__["2"] is not None:
    print "Your number was %d." % (int("2"+options.__dict__["2"]))

и так далее для всех цифр до 9. Также подумайте, нужно ли считать 0 ...

...