通过修订从 gitpython 获取二进制文件(获取 unicodestring,需要字节)
Get a binary file from gitpython by revision (got unicodestring, want bytes)
我想使用 gitpython 访问 git 存储库中二进制文件的内容。不幸的是 repo.git.show
returns 一个 unicode 字符串而不是一个字节对象。所以我想将字符串转换成字节,但失败了。
#!/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'))
和运行变成
UnicodeEncodeError: 'utf-8' codec can't encode character '\udcff' in position 0: surrogates not allowed
这并不奇怪。
如何将此 unicode 字符串转换为字节?或者更好的是,我如何将文件的内容作为字节对象获取?
尝试
b = BytesIO(u.encode('utf-8','surrogateescape'))
我想使用 gitpython 访问 git 存储库中二进制文件的内容。不幸的是 repo.git.show
returns 一个 unicode 字符串而不是一个字节对象。所以我想将字符串转换成字节,但失败了。
#!/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'))
和运行变成
UnicodeEncodeError: 'utf-8' codec can't encode character '\udcff' in position 0: surrogates not allowed
这并不奇怪。
如何将此 unicode 字符串转换为字节?或者更好的是,我如何将文件的内容作为字节对象获取?
尝试
b = BytesIO(u.encode('utf-8','surrogateescape'))