/ / Obter um arquivo binário do gitpython por revisão (get unicodestring, want bytes) - git, python-3.x, gitpython

Obtenha um arquivo binário do gitpython por revisão (tenha unicodestring, want bytes) - git, python-3.x, gitpython

Eu quero acessar o conteúdo de um binário em um repositório git usando gitpython. Infelizmente repo.git.show retorna uma string unicode e não um objeto de bytes. Então eu quero converter a string em bytes e não conseguir fazer isso.

#!/usr/bin/env python

from io import BytesIO
import git

# initialize repository
repo = git.Repo(".")
# use git show to get the content of example.jpg in revision 19e91a
u = repo.git.show("4cb2a02:example.jpg")

b = BytesIO(u.encode("utf-8"))

e se deparar

UnicodeEncodeError: "utf-8" codec can"t encode character "udcff" in position 0: surrogates not allowed

O que não é uma surpresa.

Como posso converter essa string unicode em bytes? Ou melhor, como faço para buscar o conteúdo do arquivo como objeto de byte?

Respostas:

1 para resposta № 1

experimentar

b = BytesIO(u.encode("utf-8","surrogateescape"))