-3
我已经查看了werkzeug的源代码和文档,它没有指定它打开的模式。由于普通文件的默认打开模式是文本模式,它给我带来了问题。此前,我遇到了一个问题,即在sqlalchemy中将data = storage.read()保存到LargeBinary类型中,并出现错误消息:无法将unicode转换为字节类型。Filestorage storage.read()以二进制模式打开文件吗?
我已经查看了werkzeug的源代码和文档,它没有指定它打开的模式。由于普通文件的默认打开模式是文本模式,它给我带来了问题。此前,我遇到了一个问题,即在sqlalchemy中将data = storage.read()保存到LargeBinary类型中,并出现错误消息:无法将unicode转换为字节类型。Filestorage storage.read()以二进制模式打开文件吗?
是的,文件以二进制模式打开。见default_stream_factory()
function source:
def default_stream_factory(total_content_length, filename, content_type, content_length=None): """The stream factory that is used per default.""" if total_content_length > 1024 * 500: return TemporaryFile('wb+') return BytesIO()
因此,无论你得到一个TemporaryFile()
对象wb+
模式(写入和读取,二进制),或在内存中的对象BytesIO
打开。