Как мне исправить ошибку атрибута: объект ‘bytes’ не имеет атрибута ‘encode’?

#python

#python

Вопрос:

Это мой код z = (priv.to_string().encode('hex')) , и я получил эту ошибку:

 "AttributeError: 'bytes' object has no attribute 'encode'"
 

похоже, я что-то пропустил, чтобы показать «encode» после кода:

z = (priv.to_string().

Комментарии:

1. Что такое priv ‘s type? Попробуйте str(priv) , а не priv.to_string()

2. это строка, я ставлю hex() после «z = (priv.to_string(). и after .encode теперь это мой код, и все в порядке «z = (priv.to_string().hex().encode (hex()) но у меня синтаксическая ошибка вмой следующий вывод кода, вот мой следующий код «print («закрытый ключ = » z » » «адрес = 0x» адрес)»

Ответ №1:

Здесь две проблемы:

  • вы используете priv.to_string() (который не является встроенным методом) вместо str(priv)
  • 'hex' был удален как кодировка в Python 3, поэтому при str(priv).encode('hex') этом вы получите следующую ошибку: LookupError: 'hex' is not a text encoding; use codecs.encode()to handle arbitrary codecs

Однако, начиная с Python 3.5, вы можете просто сделать:

 priv.hex()
 

с priv байтовой строкой.

Пример:

 priv = b'test'
print(priv.hex())
 

Выходной сигнал:

 74657374
 

Комментарии:

1. Я изменил свой код: «z = str (priv.to_string().hex().encode ())» и это работает! большое спасибо!

Ответ №2:

в системах Python3 старше версии 3.5 вы можете from binascii import hexlify и использовать hexlify(priv.to_string())