Optparse, старая версия просто игнорирует все нераспознанные аргументы и продолжает. В большинстве случаев это не идеально и было изменено в argparse. Но есть несколько ситуаций, когда вы хотите игнорировать нераспознанные аргументы и анализировать те, которые вы указали.
Например:
parser = argparse.ArgumentParser()
parser.add_argument('--foo', dest="foo")
parser.parse_args()
$python myscript.py --foo 1 --bar 2
error: unrecognized arguments: --bar
Есть ли способ перезаписать это?
Ответы:
замещать
с участием
Например,
источник
parse_known_args
parser.parse_args(None)
а неparser.parse_args([])
в своих тестах.parse_known_args
а неparse_args
разрешающий использованиеArgumentParser
в коде в рамкахif __name__ == 'main':
(условие, которое относитсяTrue
ко всем ячейкам в записной книжке IPython ... которое, как я нахожу, очень помогает при разработке и тестировании кода, который я хочу со временем перенести в вызываемый скрипт из командной строки)Вы можете поместить оставшиеся части в новый аргумент,
parser.add_argument('args', nargs=argparse.REMAINDER)
если хотите использовать их.источник
parse_args()
и не требуетparse_known_args()
(на Python 2.7).На самом деле argparse все еще «игнорирует»
_unrecognized_args
. Пока эти «нераспознанные» аргументы не используют префикс по умолчанию, вы не услышите жалоб от парсера.Использование конфигурации @ anutbu, но со стандартом
parse.parse_args()
, если бы мы выполняли нашу программу со следующими аргументами.У нас будет этот сбор данных в пространстве имен для работы.
Если бы мы хотели
-
игнорировать префикс по умолчанию, мы могли бы изменить ArgumentParser и решить, что+
вместо этого мы будем использовать для наших «распознанных» аргументов.Эта же команда выдаст
Положи это в свою трубку и покури это =)
NJoy!
источник