【问题标题】:Is Filestorage storage.read() open the file in binary mode?Filestorage storage.read() 是否以二进制模式打开文件?
【发布时间】:2015-07-27 08:24:00
【问题描述】:

我查看了 werkzeug 的源代码和文档,没有指定它打开的模式。由于普通文件的默认打开模式是文本模式,这给我带来了问题。早些时候,我在sqlalchemy中将data=storage.read()保存为LargeBinary类型时遇到问题,报错:can't convert unicode to byte type。

【问题讨论】:

    标签: python flask werkzeug


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2015-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      相关资源
      最近更新 更多