Migrating optparse
code to argparse
¶
The argparse
module offers several higher level features not natively
provided by the optparse
module, including:
Обробка позиційних аргументів.
Supporting subcommands.
Дозволяє альтернативні префікси параметрів, наприклад
+
і/
.Обробка нуля або більше та одного або кількох аргументів стилю.
Створення більш інформативних повідомлень про використання.
Забезпечення набагато простішого інтерфейсу для користувацького
типу
ідії
.
Originally, the argparse
module attempted to maintain compatibility
with optparse
. However, the fundamental design differences between
supporting declarative command line option processing (while leaving positional
argument processing to application code), and supporting both named options
and positional arguments in the declarative interface mean that the
API has diverged from that of optparse
over time.
As described in Choosing an argument parsing library, applications that are
currently using optparse
and are happy with the way it works can
just continue to use optparse
.
Application developers that are considering migrating should also review the list of intrinsic behavioural differences described in that section before deciding whether or not migration is desirable.
For applications that do choose to migrate from optparse
to argparse
,
the following suggestions should be helpful:
Замініть усі виклики
optparse.OptionParser.add_option()
на викликиArgumentParser.add_argument()
.Замініть
(options, args) = parser.parse_args()
наargs = parser.parse_args()
і додайте додаткові викликиArgumentParser.add_argument()
для позиційних аргументів. Майте на увазі, що те, що раніше називалосяoptions
, тепер у контекстіargparse
називаєтьсяargs
.Замініть
optparse.OptionParser.disable_interspersed_args()
на використанняparse_intermixed_args()
замістьparse_args()
.Замініть дії зворотного виклику та аргументи ключового слова
callback_*
на аргументиtype
абоaction
.Замініть назви рядків для ключових аргументів
type
відповідними об’єктами типу (наприклад, int, float, complex тощо).Замініть
optparse.Values
наNamespace
іoptparse.OptionError
іoptparse.OptionValueError
наArgumentError
.Замініть рядки неявними аргументами, такими як
%default
або%prog
стандартним синтаксисом Python, щоб використовувати словники для форматування рядків, тобто%(default)s
і%(prog)s
.Замініть аргумент
version
конструктора OptionParser на викликparser.add_argument('--version', action='version', version=' <the version> ')
.