/ / Pobierz plik binarny z gitpython przez revision (uzyskał unicodestring, want bytes) - git, python-3.x, gitpython

Pobierz plik binarny z gitpython według wersji (uzyskał unicodestring, chcesz bajtów) - git, python-3.x, gitpython

Chcę uzyskać dostęp do zawartości pliku binarnego w repozytorium git za pomocą gitpython. Niestety repo.git.show zwraca ciąg znaków Unicode, a nie obiekt Bajty. Więc chcę przekonwertować ciąg na bajty i nie mogę tego zrobić.

#!/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"))

i napotkasz

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

Co nie jest zaskoczeniem.

Jak mogę przekonwertować ten ciąg znaków Unicode na bajty? Lub lepiej, jak mogę pobrać zawartość pliku jako obiekt bajtowy?

Odpowiedzi:

1 dla odpowiedzi № 1

próbować

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