Filestorage storage.read() 是否以二进制模式打开文件?
Is Filestorage storage.read() open the file in binary mode?
我查看了 werkzeug 的源代码和文档,没有指定打开的模式。由于普通文件的默认打开模式是文本模式,这给我带来了问题。早些时候,我在sqlalchemy中将data=storage.read()保存为LargeBinary类型时出现问题,错误提示:can't convert unicode to byte type.
是的,文件以二进制模式打开。见 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()
因此,您要么得到一个以 wb+
模式(写入和读取,二进制)打开的 TemporaryFile()
对象,要么得到内存中的 BytesIO
对象。
我查看了 werkzeug 的源代码和文档,没有指定打开的模式。由于普通文件的默认打开模式是文本模式,这给我带来了问题。早些时候,我在sqlalchemy中将data=storage.read()保存为LargeBinary类型时出现问题,错误提示:can't convert unicode to byte type.
是的,文件以二进制模式打开。见 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()
因此,您要么得到一个以 wb+
模式(写入和读取,二进制)打开的 TemporaryFile()
对象,要么得到内存中的 BytesIO
对象。