Conversión binaria Python a hexadecimal

Estoy intentando convertir un binario que tengo en python (un objeto de búfer de protocolo comprimido con gzip) en una cadena hexadecimal en un modo de escape de cadena (por ejemplo, \ xFA \ x1C ..).

He intentado tanto

repr(.getvalue()) 

tanto como

 .getvalue().encode('string-escape') 

En ambos casos, termino con una cadena que no está hecha solo de caracteres HEX.

 \x86\xe3$T]\x0fPE\x1c\xaa\x1c8d\xb7\x9e\x127\xcd\x1a.\x88v ... 

¿Cómo puedo lograr una conversión hexadecimal consistente donde cada byte se traduce realmente a un formato \ xHH? (donde H representa un carácter hexadecimal válido 0-9A-F)

El formato \xhh que ve a menudo es una ayuda de depuración , la salida de repr() aplica a una cadena con puntos de código no ASCII. Cualquier punto de código ASCII se deja en un lugar para dejar la información legible que está allí.

Si debe tener una cadena con todos los caracteres reemplazados por \xhh escapes, debe hacerlo manualmente:

 ''.join(r'\x{0:02x}'.format(ord(c)) for c in value) 

Si necesita citas para eso, también deberá agregarlas manualmente:

 "'{0}'".format(''.join(r'\x{:02x}'.format(ord(c)) for c in value))