Filestorage storage.read()是否以二进制模式打开文件?

时间:2015-05-15 12:00:45

标签: python flask werkzeug

我已经查看了werkzeug的来源和文档,它没有指定它打开的模式。由于普通文件的默认打开模式是文本模式,因此它给我带来了问题。之前,我在sqlalchemy中将data = storage.read()保存为LargeBinary类型时出现问题,并出现错误:无法将unicode转换为字节类型。

1 个答案:

答案 0 :(得分:0)

是的,文件以二进制模式打开。请参阅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对象。