2011-01-23 65 views
1

我試圖用codecs.open()打開內存中的解壓縮文件。我已經想出瞭如何在內存中解壓文件,但我不知道如何創建一個文件對象並用codecs打開它。我已經嘗試過不同的ZipFile屬性,但沒有運氣。使用codecs.open()訪問內存中的解壓縮文件

所以,在這裏我怎麼打開內存中的拉鍊:

import zipfile, io 

f = 'somezipfile.zip' 
memory_object = io.BytesIO(f.read()) 
zip_in_memory = zipfile.ZipFile(memory_object) 

回答

2

你不需要codecs.open()在內存中存取數據 - 是指從磁盤加載文件。您可以使用其extract()方法從zipfile obbject中提取文件內容,並使用decode()對結果字符串進行解碼。如果您堅持使用codecs模塊,則還可以通過zip_in_memory.open(...)獲取類似文件的對象,並用codecs.EncodedFile包裝返回的對象。

+0

但我想,爲了速度。我正在重寫代碼,以便在內存中訪問文件,而不是在臨時文件中訪問。 – marw 2011-01-23 19:49:38