Python TypeError: непустая строка формата, переданная объекту .__ format__

Недавно я столкнулся с этим исключением TypeError, которое мне было очень трудно отлаживать. В конце концов я сократил его до этого небольшого теста:

>>> "{:20}".format(b"hi")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: non-empty format string passed to object.__format__

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

 >>> "{:20}".format(b"hi".decode("ascii"))
 'hi                  '

В чем смысл этого исключения? Есть ли способ сделать это более понятным?

Ответы на вопрос(2)

Ваш ответ на вопрос