Оновлення коду optparse

Originally, the argparse module had attempted to maintain compatibility with optparse. However, optparse was difficult to extend transparently, particularly with the changes required to support nargs= specifiers and better usage messages. When most everything in optparse had either been copy-pasted over or monkey-patched, it no longer seemed practical to try to maintain the backwards compatibility.

The argparse module improves on the optparse module in a number of ways including:

  • Обробка позиційних аргументів.

  • Supporting subcommands.

  • Дозволяє альтернативні префікси параметрів, наприклад + і /.

  • Обробка нуля або більше та одного або кількох аргументів стилю.

  • Створення більш інформативних повідомлень про використання.

  • Забезпечення набагато простішого інтерфейсу для користувацького типу і дії.

Шлях часткового оновлення з optparse до argparse:

  • Замініть усі виклики 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> ').