2015-05-15 81 views
-3

我已經查看了werkzeug的源代碼和文檔,它沒有指定它打開的模式。由於普通文件的默認打開模式是文本模式,它給我帶來了問題。此前,我遇到了一個問題,即在sqlalchemy中將data = storage.read()保存到LargeBinary類型中,並出現錯誤消息:無法將unicode轉換爲字節類型。Filestorage storage.read()以二進制模式打開文件嗎?

回答

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打開。

相關問題