Argparse выдает ошибку при передаче байтового аргумента (Python 3.7) - PullRequest
0 голосов
/ 04 марта 2019

Я написал команду с argparse, которая выглядит следующим образом:

parser = argparse.ArgumentParser("MY_CMD")
group = parser.add_mutually_exclusive_group()
group.add_argument('-b', '--binary', default=None, type=bytes)
group.add_argument('-s', '--string', default=None, type=str)

В Python 2.7 это работало отлично, но теперь выполняется переход на Python 3.7, если я пытаюсь запустить его так:

parser.parse_args(['-b', b"hello"])

Я получаю следующую ошибку:

  File "C:\Python37\lib\argparse.py", line 1749, in parse_args
    args, argv = self.parse_known_args(args, namespace)
  File "C:\Python37\lib\argparse.py", line 1781, in parse_known_args
    namespace, args = self._parse_known_args(args, namespace)
  File "C:\Python37\lib\argparse.py", line 1822, in _parse_known_args
    option_tuple = self._parse_optional(arg_string)
  File "C:\Python37\lib\argparse.py", line 2108, in _parse_optional
    if not arg_string[0] in self.prefix_chars:
TypeError: 'in <string>' requires string as left operand, not int

Может кто-нибудь указать мне, как это можно исправить для Python 3?Заранее спасибо.

...