Python 应为字符串参数,获得';字节';在buffer.write中

Python 应为字符串参数,获得';字节';在buffer.write中,python,file,Python,File,我有这个: from io import StringIO buffer = StringIO() latest_file = 'C:\\Users\\miguel.santos\\Desktop\\meo_snapshots\\Snapshot_14.jpg' buffer.write(open(latest_file,'rb').read()) TypeError: string argument expected, got 'bytes' 关于如何解决这个问题有什么想法吗?io.S

我有这个:

from io import StringIO
buffer = StringIO()

latest_file = 'C:\\Users\\miguel.santos\\Desktop\\meo_snapshots\\Snapshot_14.jpg'

buffer.write(open(latest_file,'rb').read())

TypeError: string argument expected, got 'bytes'

关于如何解决这个问题有什么想法吗?

io.StringIO
是unicode文本,它的字节对应物是
io.BytesIO
。由于您的非隐藏文件是二进制jpg,因此您确实应该使用后者:

from io import BytesIO
buffer = BytesIO()

latest_file = 'C:\\Users\\miguel.santos\\Desktop\\meo_snapshots\\Snapshot_14.jpg'

buffer.write(open(latest_file,'rb').read())

不要使用
rb
,因为它会给你
bytes
对象,使用
r
@zipa可能,更一致的做法是不对二进制数据使用
StringIO
(我认为很难使用
r'
读取JPEG文件)。实际上,py3中的io.BytesIO与py2中的cStringIO.StringIO相对应。